C++ 同步在C++;

C++ 同步在C++;,c++,multithreading,c++11,C++,Multithreading,C++11,我正在阅读C++11中的const和线程安全,这里有一个相关的堆栈溢出,还有一个由Herb Sutter编写的。经常提到“同步”一词。但“同步”到底意味着什么 例如,下面两行来自Herb的视频 “在多个线程中复制同一对象而不同步”(13:40) “…const对象是完全线程安全的(真正不可变或内部同步)”(15:03)同步意味着在线程和进程之间共享资源,而不会导致争用条件和死锁 如果第1条语句中没有同步,则表示它不会锁定资源,并在完成时解锁资源 在第二个语句中,他的意思是说,因为它是一个常量对象

我正在阅读C++11中的
const
和线程安全,这里有一个相关的堆栈溢出,还有一个由Herb Sutter编写的。经常提到“同步”一词。但“同步”到底意味着什么

例如,下面两行来自Herb的视频

“在多个线程中复制同一对象而不同步”(13:40)


“…const对象是完全线程安全的(真正不可变或内部同步)”(15:03)

同步意味着在线程和进程之间共享资源,而不会导致争用条件和死锁

如果第1条语句中没有同步,则表示它不会锁定资源,并在完成时解锁资源

在第二个语句中,他的意思是说,因为它是一个常量对象,所以不能修改,因此是完全不可变的,不需要同步


对使用互斥和信号量的线程同步技术的研究将有助于您更好地理解为什么需要它以及它是如何实现的。

同步意味着在线程和进程之间共享资源,而不会导致争用条件和死锁

如果第1条语句中没有同步,则表示它不会锁定资源,并在完成时解锁资源

在第二个语句中,他的意思是说,因为它是一个常量对象,所以不能修改,因此是完全不可变的,不需要同步


对使用互斥和信号量的线程同步技术的研究将有助于您更好地理解为什么需要它以及它是如何完成的。

什么是“不锁定资源,并在完成时解锁它”?互斥引用的互斥对象通过调用pthread\u Mutex\u lock()来锁定在访问共享资源之前也会调用同样的函数一旦调用pthread_mutex_unlock(),我仍然无法得到它。在第一个声明中,Sutter没有提到任何关于互斥的内容。你说“不锁”和“解锁”,如果它“不锁”,你怎么能“解锁”它?@Allankuzi这就是我说的,请仔细阅读。不同步意味着他没有使用互斥体,即他在使用资源之前和使用资源时没有对资源执行锁定和解锁。你说的“不锁定资源并在完成时解锁资源”是什么意思?通过调用pthread_mutex_lock()锁定互斥体引用的互斥体对象在访问共享资源之前也会调用同样的函数一旦调用pthread_mutex_unlock(),我仍然无法得到它。在第一个声明中,Sutter没有提到任何关于互斥的内容。你说“不锁”和“解锁”,如果它“不锁”,你怎么能“解锁”它?@Allankuzi这就是我说的,请仔细阅读。没有同步意味着他没有使用互斥锁,即在使用资源之前和使用资源时,他没有对资源执行锁定和解锁。