concurrency相关内容
我想用一个例子说明我的问题。 假设有一个数组 N / *(N& 1)* / 线程设置为运行此函数: void Process b $ b //一些线程安全的处理,需要确定性的计算时间 unsigned char byte; std :: cin>>字节; } 一旦所有这些都同时启动,会发生什么?如何处理并发的std :: cin访问?在控制台上操作的最终
..
data_cond.wait(lk,[this] {return!data_queue.empty();}); 使用编译后的无效参数 g ++ -std = c ++ 0x -Wall -pthread threadpool.cc -o hello 最初来自书籍是 data_cond.wait(lk,[] {return!data_queue
..
data_cond.wait(lk,[this] {return!data_queue.empty();}); 使用编译后的无效参数 g ++ -std = c ++ 0x -Wall -pthread threadpool.cc -o hello 最初来自书籍是 data_cond.wait(lk,[] {return!data_queue
..
由于C ++ 11中已知有6个内存顺序,并且在有关 std :: memory_order_acquire 的文档中: http://en.cppreference.com / w / cpp / atomic / memory_order memory_order_acquire 使用此存储器顺序的加载操作在受影响的存储器位置上执行获取操作 :在此加载之前,当前 线程中的存
..
我写了一个BlockingQueue为了沟通两个线程。你可以说它遵循生产者 - 消费者模式,具有无界缓冲区。因此,我使用Critical Section和Semaphore实现它,如下: #pragma once $ b b #include“Semaphore.h” #include“Guard.h” #include 命名空间DRA { 命名空间Commo
..
我几乎没有关于使用锁来保护我共享的数据结构的问题。我使用C / C ++ / ObjC / Objc ++ 例如我有一个在多线程环境中使用的计数器类 class MyCounter { private: int counter; std :: mutex m; public: int getCount()const { return counter; } v
..
我有一个问题(segfault)在C ++ 11中运行多线程代码。这里是代码: #include #include std :: vector值; int i; void values_push_back() { values.push_back(i); } int main() { while(tr
..
C ++ 17添加了 std :: hardware_destructive_interference_size 和 std :: hardware_constructive_interference_size 。首先,我认为这只是一种获取L1缓存行大小的便携式方法,但这是一个过度简化。 问题: 这些常量与L1缓存行大小有什么关系? 有没有一个很好的例子来演示他们的用例? li>
..
当我尝试执行 openFrameworks 附带的audioOutputExample时,会收到设备(hw:0,0),设备或 资源忙时, RtApiAlsa :: getDeviceIno:snd_pcm_open 错误。 p> RtApiAlsa :: probeDeviceOpen:pcm device (hw:0,0)不会打开输出。 RtApi ::流未打开!
..
当我尝试执行 openFrameworks 附带的audioOutputExample时,会收到设备(hw:0,0),设备或 资源忙时, RtApiAlsa :: getDeviceIno:snd_pcm_open 错误。 p> RtApiAlsa :: probeDeviceOpen:pcm device (hw:0,0)不会打开输出。 RtApi ::流未打开!
..
我坚持听到线程安全。 另外,假设我有2个线程,一个写入结构体,另一个写入结构体读取它。这是危险的任何方式吗?有什么我应该寻找吗?我不认为这是一个问题。这两个线程不会(也不能)在同一时间访问结构。 另外,有人可以告诉我在这个例子中: http://stackoverflow.com/a/5125493/1248779 我们正在做一个更好的并发问题。 $ p 解决方案 线程安全是一
..
Google的“锁定免费载体”的第一个结果是由Damian Dechev,Peter Pirkelbauer和Bjarne Stroustrup撰写的研究论文描述了一个理论上的无锁向量。 解决方案 MS提供ppl :: concurrent_vector和Intel提供的tbb: :concurrent_vector。在Windows上,至少ppl和tbb是C-Runtime的一部分。
..
我在寻找一个跨平台的C ++主/工作库或工作队列库。一般的想法是,我的应用程序将创建某种类型的任务或工作对象,将它们传递到工作主工作队列,这将反过来在单独的线程或进程中执行工作。为了提供一点上下文,应用程序是一个CD ripper,我想要并行化的任务是像“rip track”,“encode WAV to Mp3”等。 我的基本要求是: 必须支持可配置的并发任务数。 必须支持任务之间
..
我的应用程序目前性能至关重要,每帧请求3-5百万个对象。最初,为了让球滚动,我 new'd 一切,让应用程序工作和测试我的算法。应用程序是多线程的。 一旦我对性能感到满意,我就开始为我的对象创建一个内存管理器。显而易见的原因是内存碎片和浪费。由于内存碎片,应用程序在崩溃之前无法继续超过几个帧。我检查了内存泄漏,知道应用程序是无泄漏的。 所以我开始使用TBB的 concurrent_qu
..
假设我有一个多线程C ++程序,以函数调用 handleRequest(string key)的形式处理请求。每个对 handleRequest 的调用发生在一个单独的线程中,并且 key 的任意大的可能值。 / p> 我想要以下行为: 同时呼叫 c> 全部序列化是 handleRequest 的正文可能如下所示: void handleRequest(string ke
..
对于任何 std :: atomic 其中T是原始类型: std :: memory_order_acq_rel 用于 fetch_xxx 操作和 std :: memory_order_acquire 加载操作和 std :: memory_order_release >操作盲目(我的意思就是重置这些函数的默认内存排序) 结果与使用 std :: memory_order_s
..
我一直听说关于并发编程的每一个地方。 解决方案 并发是什么?关于你的代码在同一时间做多个事情。这通常使用显式的“线程”来完成,但也有其他可能性。例如,如果在代码中使用OpenMP指令,那么支持OpenMP的编译器将自动为您生成线程。 线程是“执行线程”的缩写。在单线程C ++程序中,执行开始于main(),然后以顺序方式进行。在多线程程序中,第一个线程在main处开始,但是附加线程可
..
我一直在寻找学习erlang,因此,一直在阅读(好,撇去)关于演员模型。 从我的理解, actor模型只是一组函数(在erlang中称为“processes”的轻量级线程中运行),它们仅通过消息传递来相互通信。 在C ++或任何其他语言中实现: class BaseActor { std :: queue ;消息; CriticalSect
..
我使用visual studio 2012.我有一个模块,在那里,我必须从硬盘读取一大组文件,穿过它们相应的路径通过xml。为此我正在做 std :: vector m_ThreadList; 在while循环中,我将一个新线程推回到这个向量中,例如 m_ThreadList.push_back(std :: thread(& My
..
我已经编写了代码来使用Runge-Kutta方法来计算大量耦合主方程的动力学。代码包含大量的for循环,其中每个步骤是独立的。我打算使用大中央调度来加快程序。我根据我在 http:// www。 .macresearch.org / cocoa-scientists-xxxi-all-aboard-grand-central 。我的代码和Macresearch上的示例在我的机器上编译(MacOSX
..