Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对类成员的线程安全访问 是从两个不同的POSIX线程访问同一对象的两个不同的类成员,同时在C++ 03中被认为是线程安全的?< P>不,用Yes<P/P的一个小的声音 从C++ 03标准的观点来看,没有线程存在的东西,所以在任何条件下,标准都不考虑并发性作_C++_Multithreading_Thread Safety_C++03 - Fatal编程技术网

对类成员的线程安全访问 是从两个不同的POSIX线程访问同一对象的两个不同的类成员,同时在C++ 03中被认为是线程安全的?< P>不,用Yes<P/P的一个小的声音 从C++ 03标准的观点来看,没有线程存在的东西,所以在任何条件下,标准都不考虑并发性作

对类成员的线程安全访问 是从两个不同的POSIX线程访问同一对象的两个不同的类成员,同时在C++ 03中被认为是线程安全的?< P>不,用Yes<P/P的一个小的声音 从C++ 03标准的观点来看,没有线程存在的东西,所以在任何条件下,标准都不考虑并发性作,c++,multithreading,thread-safety,c++03,C++,Multithreading,Thread Safety,C++03,对类成员的线程安全访问 是从两个不同的POSIX线程访问同一对象的两个不同的类成员,同时在C++ 03中被认为是线程安全的?< P>不,用Yes<P/P的一个小的声音 从C++ 03标准的观点来看,没有线程存在的东西,所以在任何条件下,标准都不考虑并发性作为安全的任何东西。 虽然对于C++以外的一些关心和适当的同步原语来说,这通常是没有问题的,但是它还是会起作用的,其中有一些事情需要注意,其中: errno和其他结构可能不是线程本地结构。-pthread命令行选项主要解决这个问题。 类成员可以通

对类成员的线程安全访问

是从两个不同的POSIX线程访问同一对象的两个不同的类成员,同时在C++ 03中被认为是线程安全的?

< P>不,用Yes<P/P的一个小的声音

从C++ 03标准的观点来看,没有线程存在的东西,所以在任何条件下,标准都不考虑并发性作为安全的任何东西。 虽然对于C++以外的一些关心和适当的同步原语来说,这通常是没有问题的,但是它还是会起作用的,其中有一些事情需要注意,其中:

errno和其他结构可能不是线程本地结构。-pthread命令行选项主要解决这个问题。 类成员可以通过引用、指针或联合来彼此别名,因此,变异不同的成员可能确实会同时变异同一个成员 如果没有内存模型,编译器将被允许并且将会!对加载和存储进行重新排序,这意味着,例如,通过先写入一段数据,然后设置数据就绪标志的明显通信方式可能无法按预期工作。 在Windows下,当您的程序加载DLL时,在线程存在的情况下,存在一些不立即明显的静态-动态CRT问题。确保所有组件都执行相同的操作。 此外,一些旧版本的CRT可能会泄漏每个线程几百字节的内存,这通常不是问题。 不可变对象本质上是线程安全的,来自多个线程的只读访问也是如此。
在C++ 03中没有标准的内存模型,所以不可能从C++标准的角度来回答这个问题。因为它们是不同的内存位置,尽管它无论如何都应该是线程安全的,而不管内存/一致性模型,这是除非线程试图同步这些成员。@ CimeDARD7我们需要C++中的内存模型,具体地说,因为你所说的不是真的——如果编译器不知道环境是多线程的,它将进行多种优化,这些优化通常涉及到在多线程环境中不应涉及的内存位置。也就是说,-pthread至少应该部分解决这个问题。您指的是哪种优化?首先,如果您从不同的线程访问不同的内存位置,则不会得到竞争条件。现在,如果线程需要以正确的顺序查看其他线程更新,这就是内存模型规范的用武之地!接下来,我不认为编译器在多线程环境中不应该触及内存位置,即使存在内存位置,我也看不出您提到的那些优化是如何做到的!你能详细说明一下吗?-pthread链接了pthread库和一些用于可重入和线程本地存储的宏,我不知道它与此有什么关系。