原文链接:并发之(互斥体mutex、lock_guard、recursive_mutex、timed_mutex、recursive_timed_mutex、unique_lock)

一、mutex

  • mutex全名mutual exclusion(互斥体),是个object,用来协助采取独占排他方式控制“对资源的并发访问”
  • 例如,下面对一份资源进行锁定
void f(int val);int val;             //共享资源
std::mutex valMutex; //互斥体void func()
{//锁定,然后操作共享资源valMutex.lock();if (val >= 0)f(val);elsef(-val);//访问完之后解锁valMutex.unlock();
}

二、lock_guard

 

  • lock_guard是采用RAII手法封装的一个类,功能与mutex一样
  • 其在构造时自动对mutex进行锁定(lock),在析构时,在析构函数中自动对mutex进行解锁(unlock)
  • 其比mutex的好处:
    • 使用mutex,我们需要自己进行加锁(lock)和解锁(unlock)。如果对mutex进行了加锁,但是当资源访问完之后却没有对mutex进行解锁,那么其他访问这份共享资源的方法就会永远阻塞
    • lock_guard的优点时在构造时自动对mutex加锁,在作用域结束/析构时,自动对mutex进行解锁
  • 例如:
void f(int val);int val;
std::mutex valMutex; //互斥体int main()
{//以mutex声明一个lock_guard,其在构造时自动对传入的mutex进行lockstd::lock_guard<std::mutex> lg(valMutex);if (val >= 0)f(val);elsef(-val);
}//作用域结束后,lg进行析构,在析构函数中,其自动对mutex进行unlock

三、mutex和lock_guard的第一个演示案例

#include <iostream>
#include <thread>
#include <future>
#include <string>
using namespace std;std::mutex printMutex;void print(const std::string& s)
{//锁住mutex,保证每个线程打印时不会有别的线程也在打印std::lock_guard<std::mutex> l(printMutex);for (char c : s) {std::cout.put(c);}std::cout << std::endl;
}//作用域结束,mutex自动释放int main()
{auto f1 = std::async(std::launch::async, print, "Hello from a first thread");auto f2 = std::async(std::launch::async, print, "Hello from a second thread");print("Hello from the main thread");
}//因为async()的发射策略为std::launch::async,即使我们没有使用future.get()获得他们的结果,
//但是main()一定会等待两个线程执行结束才结束
  • 显示结果如下:

  • 如果在print中没有使用mutex,那么显示的结果可能为:

四、递归锁(recursive_mutex)

  • 在有时候,递归锁定是必要的,典型例子就是active object或monitor它们是在每个public函数内放一个mutex并取得其lock,用以放置data race腐蚀对象的内部状态

普通的锁不能正常进行递归锁定(死锁)

  • 例如下面是一个数据库类及其接口,每个接口中都会锁定mutex成员
class DatabaseAccess 
{
public:void createTable(){std::lock_guard<std::mutex> lg(dbMutex);//...}void insertData(){std::lock_guard<std::mutex> lg(dbMutex);//...}//这个接口中,间接调用了createTable()void createTableAndInsertData(){std::lock_guard<std::mutex> lg(dbMutex);//...createTable();}
private:std::mutex dbMutex;
};
  • 但是上面的createTableAndInsertData()接口会造成deadlock(死锁),因为其在内部对mutex进行加锁,之后又调用了createTable()接口,createTable()接口也会对mutex进行加锁,但是由于mutex已经被加锁了,因此createTable()发生死锁
  • 如果平台侦测处类似上述的deadlock,C++标准库允许第二次lock抛出异常std::system_error并带有差错码resource_deadlock_would_occur。但并非必然而且情况往往不是如此

递归(recursive_mutex)

  • 借助recursive_mutex,上述的行为就不会有问题了。recursive_mutex允许同一线程多次锁定,并在最近一次相应的unlock时释放lock
  • 例如,我们修改上面的DatabaseAccess类及其接口:
class DatabaseAccess 
{
public:void createTable(){std::lock_guard<std::recursive_mutex> lg(dbMutex);//...}void insertData(){std::lock_guard<std::recursive_mutex> lg(dbMutex);//...}void createTableAndInsertData(){std::lock_guard<std::recursive_mutex> lg(dbMutex);//...createTable();}
private:std::recursive_mutex dbMutex;
};

五、mutex的成员函数:尝试性的lock(try_lock())

  • try_lock()成员函数的作用是:对mutex进行锁定,如果能锁定就返回true,如果不能锁定就不阻塞直接返回false
std::mutex m;//对m进行尝试性加锁,加锁成功才结束while
while (m.try_lock() == false)
{doSomeOtherStuff();
}//...//使用完解锁
m.unlock();
  • 如果lock_guard想要使用try_lock()加的锁,需要传递一个额外实参adopt_lock给其构造函数例如:
std::mutex m;//对m进行尝试性加锁,加锁成功才结束while
while (m.try_lock() == false)
{doSomeOtherStuff();
}
//加锁完成之后,将mutex交给lock_guard<>进行管理,此时需要传入std::adopt_lock参数
std::lock_guard<std::mutex> lg(m, std::adopt_lock);
  • 注意:try_lock()有可能假性失败也就是说即使lock并未被他人使用也可能失败返回false(之所以提供这样的行为是为了memory-ordering(内存处理次序),但是这个并不广为人知)

六、带时间性的lock(timed_mutex、recursive_timed_mutex)

  • 为了等待特定的时间再进行加锁,那么可以使用所谓timed mutex
  • 标准库提供了std::timed_mutex和std::recursive_timed_mutex。并且这两个类都提供了try_lock_for()和try_lock_until(),用以等待某个时间段,或直至到达某个时间点再进行加锁
  • 例如:
std::timed_mutex m;//尝试加锁1秒钟,如果在1秒钟加锁成功,就执行if
if (m.try_lock_for(std::chrono::seconds(1))) 
{//将timed_mutex交给lock_guard进行管理,注意其构造函数需要传入std::adopt_lockstd::lock_guard<std::timed_mutex> lg(m, std::adopt_lock);
}
else 
{couldNotGetTheLock();
}

七、处理多个lock(全局std::lock()函数)

 

  • 有时候,一次需要锁定多个mutex(例如为了传送数据,从一个受保护资源到另一个受保护的资源,需要将两份资源同时锁定)
  • 如果使用前面的lock机制,那么可能会发生复杂且具有风险:例如你取得第一个lock却拿不到第二个lock,或许发生deadlock(如果以不同的次序去锁住相同的lock)

全局std::lock()函数

  • 全局std::lock()函数允许你一次锁定多个mutex
  • 例如:
std::mutex m1;
std::mutex m2;void func()
{std::lock(m1, m2);std::lock_guard<std::mutex> lockM1(m1, std::adopt_lock);std::lock_guard<std::mutex> lockM2(m2, std::adopt_lock);//...
}//作用域结束后,m1,m2都自动释放
  • std::lock()的注意事项:
    • 该函数会锁住它收到的所有mutex,并且阻塞到所有的mutex都被锁定或直到抛出异常才返回
    • 如果锁定的过程中抛出了异常,那么已经加锁的mutex会被释放
    • 在锁定之后,你可以配合lock_guard对mutex进行使用,并且需要传递std::adopt_lock给lock_guard的构造函数
    • 这个lock()函数提供了一个deadlock回避机制,但是多个lock的锁定次序并不明确

全局std::try_lock()函数

 

  • 该函数也可以对多个mutex进行加锁,但是其实进行尝试性加锁的。其工作原理与返回值密切相关,详情见下面的返回值
  • 返回值:
    • 如果对所有的mutex都加锁成功,返回-1。此时可以对所有的mutex进行操作了
    • 如果对其中的一部分锁没有加锁成功,那么返回第一个失败的lock的索引(从0开始)此时已经成功加锁的mutex会被释放
  • 例如:
std::mutex m1;
std::mutex m2;void func()
{int idx = std::try_lock(m1, m2);//如果对m1和m2都加锁成功,返回-1,执行ifif (idx < 0) {std::lock_guard<std::mutex> lockM1(m1, std::adopt_lock);std::lock_guard<std::mutex> lockM2(m2, std::adopt_lock);}else{std::cerr << "could not lock mutex m" << idx + 1 << std::endl;}
}
  • 注意:这个try_lock()不提供deadlock会比机制,但它保证以出现于try_lock()实参列的次序来对mutex进行尝试性加锁
  • 注意:使用lock()函数或try_lock()函数对mutex进行加锁之后,你仍然需要在作用域结束之后对mutex进行解锁(unlock()),但是一般我们会将其传递给lock_guard<>使用

八、unique_lock

  • 标准库还提供了一个unique_lock<>类,它对付mutex更有弹性
  • unique_lock<>的接口和lock_guard<>的接口相同,但是允许写出“何时加锁”以及“如何锁定或解锁”其mutex。此外,unique_lock还提供了owns_lock()和bool()接口来查询其mutex目前是否被锁住

三种锁定标志

  • 第一种:你可以传递try_to_lock,表示尝试性对mutex进行加锁,如果加锁成功就返回true,如果加锁失败就不阻塞而直接返回false。代码如下:
std::mutex m;void func()
{//尝试加锁m,但是不阻塞std::unique_lock<std::mutex> lock(m, std::try_to_lock);//如果加锁成功,执行ifif (lock){//...}
}
//作用域结束后,如果unique_lock对m成功加锁,那么unique_lock的析构函数释放m;如果没有,其析构函数什么都不做
  • 第二种你可以传递一个时间段或时间点给构造函数,表示尝试在一个明确的时间上对mutex进行加锁
std::mutex m;void func()
{//在1秒钟之后,对m进行加锁,如果加锁成功就返回,加锁失败就阻塞等待std::unique_lock<std::mutex> lock(m, std::chrono::seconds(1));//...
}
//作用域结束后,如果unique_lock对m成功加锁,那么unique_lock的析构函数释放m;如果没有,其析构函数什么都不做
  • 第三种你可以传递defer_lock给其构造函数,表示初始化unique_lock,但是并不加锁,而是在后面自己调用lock()成员函数进行加锁

std::mutex m;void func()
{//只是单单的用m初始化lock,但是不进行加锁std::unique_lock<std::mutex> lock(m, std::defer_lock);//...lock.lock(); //调用此成员函数,对m进行加锁//...
}
//作用域结束后,如果unique_lock对m成功加锁,那么unique_lock的析构函数释放m(不需要调用unlock);
//如果没有,其析构函数什么都不

std:::defer_lock标志

  • 上述的第三种使用方式中的std:::defer_lock标志,可以用来建立一或多个lock并于稍后才锁住它们
  • 例如:
std::mutex m1;
std::mutex m2;
std::mutex m3;void func()
{std::unique_lock<std::mutex> lockM1(m1, std::defer_lock);std::unique_lock<std::mutex> lockM2(m2, std::defer_lock);std::unique_lock<std::mutex> lockM3(m3, std::defer_lock);//...std::lock(m1, m2, m3);
}
  • 如果没有任何锁定标志,那么unique_lock与lock_guard一样,直接对mutex进行锁定
std::mutex m;void func()
{//与lock_guard<>一样,尝试对m进行加锁,加锁成功就返回;加锁失败就阻塞std::unique_lock<std::mutex> lock(m);
}
  • 此外,unique_lock还提供了release()用来释放mutex,或是将其mutex拥有权转移给另一个lock。

演示案例

  • 有了lock_guard和unique_lock作为工具,现在我们可以实现一个例子,以轮询某个ready flag的方式,令一个线程等待另一个线程
bool readyFlag;
std::mutex readyFlagMutex;void thread1()
{//做一些thread2需要的准备工作//...std::lock_guard<std::mutex> lg(readyFlagMutex);readyFlag = true;
}void thread2()
{//等待readyFlag变为true{std::unique_lock<std::mutex> ul(readyFlagMutex);//如果readyFlag仍未false,说明thread1还没有锁定,那么持续等待while (!readyFlag){ul.unlock();std::this_thread::yield();std:this_thread::sleep_for(std::chrono::milliseconds(100));ul.lock();}}//释放lock//在thread1锁定之后,做相应的事情
}

九、细说mutex和lock

细说mutex

  • 标准库提供了四个mutex,如下:

  • 比较如下:

  • 下面列出了mutex的操作函数:

  • lock()成员函数有可能抛出std::system_error并带有下面的差错码:
    • operation_not_permitted——如果线程的特权级(privilege)不足以执行次操作
    • resource_deadlock_would_occur——如果平台侦测到有个deadlock即将发生
    • device_or_resource_busy——如果mutex已被锁定而无法形成阻塞(blocking)
  • 如果程序解除(unlock)一个并非它所拥有的mutex object,或是销毁一个被任何线程拥有的mutex object,或是线程拥有mutex object但却结束了生命,将导致不明确的行为
  • 注意,处理系统时间调整时,try_lock_for()和try_lock_until()通常有异

细说lock_guard

  • 下图列出了lock_guard的操作函数

细说unique_lock

  • unique_lock为一个不一定得锁住的mutex提供一个lock guard。它提供的接口如下图所示:

  • lock()可能抛出std::system_error,其所夹带的差错码和mutex的lock()所引发的相同
  • unlock()可能抛出std::system_error并夹带差错码operation_not_permitted——如果这个unique lock并未被锁的话

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. elasticsearch安装ik分词器,连接mysql8.0实现热加载词库,踩坑

    安装的是elasticsearch7.7.1 从https://github.com/medcl/elasticsearch-analysis-ik下载ik源码(导入idea):1:修改pom.xml 版本号改为自己的ES对应版本 如:7.7.1添加mysql的jar包(和mysql数据库对应)2.修改源码参考:https://blog.csdn.net/qq_35524586/article/det…...

    2024/4/30 22:50:51
  2. docker目录迁移/var/lib/docker/overlay满了

    先保存docker system df 查看docker使用的磁盘情况,比如镜像、容器各占了多大的空间 docker system prune命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)。 迁移docker目录 1,stop docker systemctl stop docker 2,创建新的doc…...

    2024/4/24 12:21:51
  3. mac下安装与配置jmeter

    参考原文 1、下载安装JDKa、java -version # 检查JDK版本 /usr/libexec/java_home -V # 列出所有JDK版本的JAVA_HOME 2、配置JDK环境变量 a、mac本配置环境变量的规则如下 Mac系统的环境变量,加载顺序为: a. /etc/profile b. /etc/paths c. ~/.bash_profile d. ~/.bash_login…...

    2024/4/30 23:07:33
  4. 几种常见的程序命名规则

    正确并形象地给函数、变量命名,不仅可以增加程序的可读性,也是程序员编程风格的一种反映。较好的命名习惯,可以有效的提高程序的可维护性。以下介绍几种常用的变量命名规则。匈牙利命名法 广泛应用于Microsoft Windows这类环境中。 这种命名技术是由一位能干的 Microsoft 程…...

    2024/4/30 23:19:59
  5. CUDA 并行计算 机器学习 NVCC CUDNN CUDATOOLKIT CUDA DRIVER 显卡驱动(NVIDIA Driver) 显卡(GPU)

    微信公众号: 点击蓝色字体小白图像与视觉进行关注 关于技术、关注yysilence00。有问题或建议,请公众号留言整理知识,学习笔记 发布日记,杂文,所见所想CUDA 并行计算 机器学习 NVCC CUDNN CUDATOOLKIT CUDA DRIVER 显卡驱动(NVIDIA Driver) 显卡(GPU) 在使用深度学习框架的…...

    2024/4/30 1:18:49
  6. 目前高分子材料工程领域存在哪些科研难题?

    高分子材料几乎可以应用于材料学研究范畴的各个领域,每个材料学中未能解决的问题都可以归入高分子材料亟需解决的问题。因为了解一些关于大分子自组装领域的知识, 以此为例粗答一下:大分子自组装就是将高分子(均聚物或嵌段共聚物)通过分子作用力,目前应用包括生物材料、仿…...

    2024/4/30 19:36:35
  7. Android Studio安装后错误ERROR:Cause:unable to find valid certification path to requested target

    安装之后就出先这个错误ERROR:Cause:unable to find valid certification path to requested target,报告的无安全证书,我试了其他博主说的插入安全证书等等一系列方法。解决方法:我都吧原来的都卸载干净,下载了Android Studio3.4.2版本,然后在build.gradle插入了 mav…...

    2024/4/30 22:10:16
  8. 详解 nginx location ~ .*\.(js|css)?$ 什么意思?

    location 是用来匹配用的语法规则: location [=|~|~*|^~] /uri/ { … }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。~ 开头表示区分大小…...

    2024/4/17 15:46:54
  9. ORACLE查询时去掉字段的换行键和回车键

    select translate(列名,chr(13)||chr(10),’,’) from 表名; char(10)换行键,char(13)回车键...

    2024/4/15 4:37:39
  10. c++中虚函数的作用(virtual)

    我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在…...

    2024/4/30 19:50:30
  11. H5 的直播协议和视频监控方案

    H5 的直播协议和视频监控方案一、流媒体主要实现方式二、流媒体技术2.1 流媒体2.2 直播2.3 流协议2.3.1 HLS 协议2.3.2 RTMP 协议2.3.3 RTSP 协议2.3.4 MPEG-DASH2.3.5 WebRTC 协议2.4 服务器端技术2.4.1 GStreamer2.4.2 Live5552.4.3 其它三、HTML5媒体标签3.1 <audio>3…...

    2024/4/30 20:00:00
  12. 《Kotlin从小白到大牛》第14章:函数式编程基石——高阶函数和Lambda表达式

    第14章 函数式编程基石——高阶函数和Lambda表达式 函数式编程思想虽然与面向对象一样立即悠久,但是支持函数式编程的计算机语言不过是近几年的事情。这些语言有Swift、Python、Java 8和C++11等,作为新生的语言Kotlin也支持函数式编程。本章将介绍Kotlin语言中函数式编程最重…...

    2024/5/1 0:10:42
  13. LAMMPS应用:LAMMPS模拟冲击压缩

    冲击波通常是由爆炸或宏观物体的高速碰撞产生的,如炸药爆炸,高速弹丸穿甲,陨石撞击等。冲击波作用下材料在极短时间内发生塑性形变、熔化或化学反应等本质上不可逆的变化。冲击载荷相关的空间尺度(如晶格层次形变)和时间分辨率(皮秒至飞秒量级)都非常适合于通过MD模拟进…...

    2024/4/24 12:21:52
  14. qt制作中国象棋

    qt制作象棋 mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEenum ChessType {NullChess,RJu,RMa,RXiang,RShi,RJiang,RPao,RBing,BJu,BMa,BXiang,BShi,BJiang,BP…...

    2024/5/1 0:50:17
  15. 写代码需要注意的地方

    以下属于个人总结,如有更好的方法或错误欢迎评论指出。一、命名:一个好的命名让代码的可读性更强。(希望大家评论给出自己更好的命名方法,我再更新到这)1)类名需要尽可能的简约(不超过三个业务描述的单词,超过了可以缩写某个单词或直接省略);例如 用户控制类 UserCon…...

    2024/4/24 12:21:46
  16. 基于深度学习的HSI分类——解决两大问题(二)

    1.分类网络(解决高维异变) 近些年来,深度学习成为最成功的技术之一,在计算机视觉领域取得了非常好的表现。受到那些重大突破的激励,把深度学习引入了遥感领域的HSIs分类。相较于传统的基于特征的手动方法,深度学习能够从复杂的高光谱数据自动地学习分析高层级特征。基于深…...

    2024/4/24 12:21:45
  17. c++ 反射

    转至:https://cloud.tencent.com/developer/article/1524775本文不讨论完整的C++反射技术,只讨论 结构体 (struct) 的 字段 (field) 反射,及其在序列化/反序列化代码生成上的应用。正文开始于 静态反射 部分,其他部分都是铺垫,可以略读。打包后的代码可以通过 archived.z…...

    2024/4/24 12:21:44
  18. 软考高级信息系统项目管理师备考经验分享

    超详细的信息系统项目管理师备考经验分享,让你一次通过! 信息系统项目管理师作为软考高级资格考试,每年通过率20%不到,所以报考这个考试的朋友,一定要好好复习,争取一次考过。 软考考试说难也不难,简单不算不上,但用心复习一般都能有百分之八十的机率能过。 所以在这里…...

    2024/4/24 12:21:43
  19. http实现浏览器端大文件分片上传

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。第一步:前端修改由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Up…...

    2024/4/24 12:21:43
  20. ZOJ 1789 The Suspects(经典并查集)

    The Suspects题目传送门~Time Limit: 2000 msMemory Limit: 65536 KBSevere acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To minimize transmission to others, the best strategy…...

    2024/4/24 12:21:41

最新文章

  1. linuxwindowns文件共享之samba

    samba 我们所了解过的 FTP 文件传输&#xff0c;的确可以让不同主机之间进行文件传输&#xff0c;此方式特点是&#xff0c;传输文件&#xff0c;用户想要在客户端直接修改服务器的数据&#xff0c;还是较为麻烦。 既然如此&#xff0c;linux 上有一款应用叫 Samba&#xff0…...

    2024/5/1 1:05:50
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. NzN的数据结构--选择排序

    接上文&#xff0c;本章我们来介绍选择排序。先三连后看才是好习惯~~~ 目录 一、基本思想 二、直接选择排序 三、堆排序 一、基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待…...

    2024/4/13 17:02:17
  4. Ubuntu磁盘扩容

    使用 df -h命令查看系统磁盘控件的使用情况&#xff1a; [samspobosrv:~]$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.7M 1.…...

    2024/4/30 2:45:14
  5. C#-实现软删除

    文章目录 前言1. 使用布尔字段标记删除状态2. 修改查询以忽略软删除的记录3. 实现软删除的方法4. 考虑使用全局查询过滤器5. 处理关联实体6. 考虑性能和存储软删除的好处&#xff1a;软删除的坏处&#xff1a; 总结 前言 后端中&#xff0c;经常使用软删除来标志删除一些数据。…...

    2024/4/30 1:36:16
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/29 23:16:47
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57