concurrency相关内容

如何同步两个进程访问NAS上的文件?

这里的东西:我有两个应用程序,用C ++编写并运行在两个机器与不同的操作系统(一个Linux和一个Windows)。其中一个过程是负责更新NAS(网络连接存储)上的XML文件,而另一个读取此文件。 是否可以同步这两个进程,以避免在修改文件的同时读取该文件? 解决方案 您可以在执行写入之前创建的服务器上创建锁定文件,等待,然后在完成时写入和删除。 在工作之前,读写器和写入器都有一个锁 ..
发布时间:2016-10-17 10:31:07 C/C++开发

如何解决用于在C ++中维护静态局部变量的服务数据的线程安全性?

请考虑以下情况。我们有一个带有静态局部变量的C ++函数: void function() { static int variable = obtain(); // blahblablah } 该函数需要从多个线程调用同时,所以我们添加一个关键部分,以避免并发访问静态局部: void functionThreadSafe() { Critical ..
发布时间:2016-10-17 09:48:56 C/C++开发

函数局部静态const对象的线程安全初始化

此问题使我怀疑一个我一直在追踪多年的做法。 对于函数局部静态const对象的线程安全初始化,我保护对象的实际构造但不是引用它的函数局部引用的初始化。这样的东西: 命名空间{ const some_type& create_const_thingy() { lock my_lock(some_mutex); static const some_type the_const_th ..
发布时间:2016-10-16 14:52:51 C/C++开发

什么是并发的C ++ 03内存模型?

C ++ 03中的并发内存模型是什么? (而且,C ++ 11是否更改了内存模型以更好地支持并发?) 解决方案 C ++内存模型是物理内存相对于C ++代码读/写的时间和原因的规范。 > 直到下一个C ++标准,C ++内存模型与C相同。在C ++ 0x标准中,期望包括用于多线程的适当的内存模型a href =“http://en.wikipedia.org/wiki/C%2B ..
发布时间:2016-10-14 23:02:25 C/C++开发

是否可以安全地读取一个整数变量,同时修改而不锁定?

假设我在类中有一个整数变量,这个变量可能会被其他线程同时修改。写由互斥保护。我需要保护读吗?我听说有一些硬件架构,如果一个线程修改一个变量,另一个线程读取它,那么读取结果将是垃圾;在这种情况下,我确实需要保护读。我从来没有见过这样的架构。 这个问题假设一个事务只包括更新一个整数变量,所以我不担心任何 解决方案 原子读取 如前所述,它依赖于平台。在x86上,该值必须在4字节边界上 ..
发布时间:2016-10-14 22:56:27 C/C++开发

单元测试并发代码

我的周末项目包括编写跨平台的并发原语库(关键部分,读/写互斥,互锁整数,事件等),并想知道如何单元测试这个东西。我意识到这本身测试并发代码是很难的,但在测试的原语说的代码不能那么难,可能吗? 原来,它是很难。至少,对我来说是。 所以,你会如何去处理这个?只是作为一个例子,我甚至不知道从哪里开始测试关键的部分。 解决方案 不要去想单位测试,想想要指定的行为。例如: Giv ..
发布时间:2016-10-14 20:34:59 C/C++开发

如何使用rand_r和如何使用它在线程安全的方式?

我想学习如何使用rand_r,在阅读这个问题后我还是有点困惑,有人可以看看,指出我错过了什么?根据我的理解,rand_r取指向某个值的指针(或一段具有某些初始值的内存),并在每次被调用时使用它来生成新的数字。每个调用rand_r的线程都应该为它提供一个唯一的指针(或一块内存),以获得不同线程之间的“实际随机”数字。这就是为什么: int globalSeed; //线程1 ra ..
发布时间:2016-10-14 12:14:43 C/C++开发

在C ++ 11中是否有任何并发​​容器?

特别是,我在寻找一个阻塞队列。在C ++ 11中有这样的事情吗?如果没有,我的其他选择是什么?我真的不想去自己的线程级别了。太容易出错。 解决方案 根据Microsoft Visual C ++团队的Diego Dagum,: 周期性的问题(很多,其中许多)是关于STL容器 和他们是否是线程安全。 在这里采取斯蒂芬的话,现实是,不是作为一个 错误,但作为一个特点:拥有每个S ..
发布时间:2016-10-14 12:02:32 C/C++开发

是stl向量并发读取线程安全吗?

我正在开发一个应用程序,其中大量的线程需要迭代的字符串值的集合,并尝试匹配它自己的数据与列表中的数据。 我正在寻找以下用例: 向量被初始化为std :: string类型的几个元素。 (让我们说对象名是strList)。 所有线程将迭代strList,以查看它的值是否与strlist的至少一个元素匹配。 没有线程会尝试修改strList,它将被严格用作只读对象。 并发读是线程 ..
发布时间:2016-10-13 11:17:24 C/C++开发

我需要在多线程环境中保护对STL容器的读访问权限吗?

我有一个std :: list容器和这些线程: 一个作家线程无限期添加元素。 一个读取器/写入器线程,在可用时读取和删除元素。 读取线程访问容器的SIZE(通过使用size()方法) 它保护从前两个线程对列表的访问。我的问题是,做大小读取器线程需要获取这个互斥吗?我应该使用读/写mutex? 我在使用Visual C ++ 6的Windows环境中。 更新: ..
发布时间:2016-10-11 23:17:00 C/C++开发

并发性:C ++ 11内存模型中的原子和易失性

全局变量在2个不同核心上的2个并发运行的线程中共享。线程写入和读取变量。对于原子变量,一个线程可以读取一个陈旧的值?每个核心可能在其缓存中具有共享变量的值,并且当一个线程在缓存中写入其副本时,不同核心上的另一个线程可能从其自己的缓存读取失效值。或者编译器强大的内存排序从其他缓存读取最新的值? c ++ 11标准库具有std :: atomic支持。这与volatile关键字有何不同? 解决方 ..
发布时间:2016-10-11 20:55:00 C/C++开发

并发缓存共享模式

Ok我有点不确定如何最好命名这个问题:)但假设这个场景,你是 出去和获取一些网页(与各种网址)和本地缓存。缓存部分很容易解决,即使有多个线程。 但是,想象一个线程开始获取一个url,几个毫秒后,另一个想得到相同的网址。有什么好的模式使秒线程的方法等待第一个获取页面,将其插入缓存并返回它,所以你不必做多个请求。有足够的开销,即使对于需要大约300-700毫秒的请求,它值得做吗? 基本上 ..
发布时间:2016-10-11 11:40:01 C#/.NET

当使用ConcurrentQueue时,尝试在并行循环时出队

我在我的.NET 4应用程序中使用并行数据结构,我有一个 ConcurrentQueue ,在我通过它处理时被添加。 我想做一些类似的事情: personqueue.AsParallel()。WithDegreeOfParallelism(20).ForAll (i => ...); ,因为我进行数据库调用来保存数据,线程。 但是,我期望 ForAll 不会出队,做 ..
发布时间:2016-10-11 11:32:43 C#