concurrency相关内容

如何scanf(),std :: cin行为在多线程环境?

我想用一个例子说明我的问题。 假设有一个数组 N / *(N& 1)* / 线程设置为运行此函数: void Process b $ b //一些线程安全的处理,需要确定性的计算时间 unsigned char byte; std :: cin>>字节; } 一旦所有这些都同时启动,会发生什么?如何处理并发的std :: cin访问?在控制台上操作的最终 ..
发布时间:2016-10-27 00:11:22 C/C++开发

data_condition等待无效参数错误

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 ..
发布时间:2016-10-25 16:35:28 C/C++开发

data_condition等待无效参数错误

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 ..
发布时间:2016-10-25 16:04:30 C/C++开发

C ++模板化生产者 - 消费者阻塞Queue,无界缓冲区:我如何优雅地结束?

我写了一个BlockingQueue为了沟通两个线程。你可以说它遵循生产者 - 消费者模式,具有无界缓冲区。因此,我使用Critical Section和Semaphore实现它,如下: #pragma once $ b b #include“Semaphore.h” #include“Guard.h” #include 命名空间DRA { 命名空间Commo ..
发布时间:2016-10-24 16:28:00 C/C++开发

理解std :: hardware_destructive_interference_size和std :: hardware_constructive_interference_size

C ++ 17添加了 std :: hardware_destructive_interference_size 和 std :: hardware_constructive_interference_size 。首先,我认为这只是一种获取L1缓存行大小的便携式方法,但这是一个过度简化。 问题: 这些常量与L1缓存行大小有什么关系? 有没有一个很好的例子来演示他们的用例? li> ..
发布时间:2016-10-23 22:26:31 C/C++开发

线程安全编程

我坚持听到线程安全。 另外,假设我有2个线程,一个写入结构体,另一个写入结构体读取它。这是危险的任何方式吗?有什么我应该寻找吗?我不认为这是一个问题。这两个线程不会(也不能)在同一时间访问结构。 另外,有人可以告诉我在这个例子中: http://stackoverflow.com/a/5125493/1248779 我们正在做一个更好的并发问题。 $ p 解决方案 线程安全是一 ..
发布时间:2016-10-23 15:13:23 C/C++开发

是否有无锁向量实现?

Google的“锁定免费载体”的第一个结果是由Damian Dechev,Peter Pirkelbauer和Bjarne Stroustrup撰写的研究论文描述了一个理论上的无锁向量。 解决方案 MS提供ppl :: concurrent_vector和Intel提供的tbb: :concurrent_vector。在Windows上,至少ppl和tbb是C-Runtime的一部分。 ..
发布时间:2016-10-23 14:34:16 C/C++开发

C ++ master / worker

我在寻找一个跨平台的C ++主/工作库或工作队列库。一般的想法是,我的应用程序将创建某种类型的任务或工作对象,将它们传递到工作主工作队列,这将反过来在单独的线程或进程中执行工作。为了提供一点上下文,应用程序是一个CD ripper,我想要并行化的任务是像“rip track”,“encode WAV to Mp3”等。 我的基本要求是: 必须支持可配置的并发任务数。 必须支持任务之间 ..
发布时间:2016-10-22 19:48:16 C/C++开发

线程安全内存池

我的应用程序目前性能至关重要,每帧请求3-5百万个对象。最初,为了让球滚动,我 new'd 一切,让应用程序工作和测试我的算法。应用程序是多线程的。 一旦我对性能感到满意,我就开始为我的对象创建一个内存管理器。显而易见的原因是内存碎片和浪费。由于内存碎片,应用程序在崩溃之前无法继续超过几个帧。我检查了内存泄漏,知道应用程序是无泄漏的。 所以我开始使用TBB的 concurrent_qu ..
发布时间:2016-10-22 19:28:03 C/C++开发

如何使用任意字符串作为C ++中的锁?

假设我有一个多线程C ++程序,以函数调用 handleRequest(string key)的形式处理请求。每个对 handleRequest 的调用发生在一个单独的线程中,并且 key 的任意大的可能值。 / p> 我想要以下行为: 同时呼叫 c> 全部序列化是 handleRequest 的正文可能如下所示: void handleRequest(string ke ..
发布时间:2016-10-22 18:19:32 C/C++开发

获取/释放与顺序一致的内存顺序

对于任何 std :: atomic 其中T是原始类型: std :: memory_order_acq_rel 用于 fetch_xxx 操作和 std :: memory_order_acquire 加载操作和 std :: memory_order_release >操作盲目(我的意思就是重置这些函数的默认内存排序) 结果与使用 std :: memory_order_s ..
发布时间:2016-10-22 17:21:14 C/C++开发

并发编程c ++?

我一直听说关于并发编程的每一个地方。 解决方案 并发是什么?关于你的代码在同一时间做多个事情。这通常使用显式的“线程”来完成,但也有其他可能性。例如,如果在代码中使用OpenMP指令,那么支持OpenMP的编译器将自动为您生成线程。 线程是“执行线程”的缩写。在单线程C ++程序中,执行开始于main(),然后以顺序方式进行。在多线程程序中,第一个线程在main处开始,但是附加线程可 ..
发布时间:2016-10-22 17:08:15 C/C++开发

演员模型:为什么erlang特别?或者,你为什么需要另一种语言呢?

我一直在寻找学习erlang,因此,一直在阅读(好,撇去)关于演员模型。 从我的理解, actor模型只是一组函数(在erlang中称为“processes”的轻量级线程中运行),它们仅通过消息传递来相互通信。 在C ++或任何其他语言中实现: class BaseActor { std :: queue ;消息; CriticalSect ..
发布时间:2016-10-22 17:06:54 C/C++开发

如何从dispatch_apply(GCD)循环写入数组?

我已经编写了代码来使用Runge-Kutta方法来计算大量耦合主方程的动力学。代码包含大量的for循环,其中每个步骤是独立的。我打算使用大中央调度来加快程序。我根据我在 http:// www。 .macresearch.org / cocoa-scientists-xxxi-all-aboard-grand-central 。我的代码和Macresearch上的示例在我的机器上编译(MacOSX ..
发布时间:2016-10-19 20:48:14 C/C++开发