可以安全地共享指针数据的多线程库
Multithreading library that can share pointer data safely?
基本上我想实现的是在不同的线程之间共享一个动态分配的状态标志数组,以控制线程之间的交互。
有没有库可以在Windows操作系统中完美地实现这一点?
我尝试了Open MP,它给了我各种奇怪的bug和很多头痛,即使使用omp flush有时数据仍然不是最新的,volatile指针也没有帮助,当访问频率很高时,所以程序变得非常不稳定和不一致。
是否有库可以更好地处理共享和经常更新和访问的数据数组(动态)?TBB能处理好这种情况吗?
同一个进程的线程共享同一个堆,所以在这个堆上分配的内存可以在这些线程之间共享。
所有程序需要确保的是保护这样的"共享"内存不被并发访问。
后者可以通过使用锁(如互斥锁)来实现。
常见的解决方案是使用互斥体。基本思想是用临界区包装对共享变量的任何访问。互斥锁:
WaitForSingleObject(mutexHandle);
// shared data access & modification
ReleaseMutex(mutexHandle);
- CreateMutex
- WaitForSingleObject 教程
如果您可以访问c++ 11,请尝试使用std::atomic<T>
类型,它允许您与原子访问语义共享基本类型。
- std::原子
相关文章:
- 在C++中使用cURL和多线程
- 为什么添加延迟会提高此多线程环境中的数据吞吐量?
- 在使用 std::cout 和多线程程序中如何避免数据竞争<iomanip>?
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- 使用FFMPEG编写多线程视频和音频数据包
- 共享内存多线程和数据访问
- TinyXMl中的多线程写入数据
- 在多线程程序中通过用户事件传递短数据的正确方法是什么
- 在多线程环境中将数据写入数组
- 我应该在多线程编程中始终锁定全局数据吗?为什么
- C++独立数据的多线程性能
- 为什么开发人员在多线程代码的读/写过程中锁定字长数据
- c++多线程套接字无法接收客户端数据
- 如果一个程序的主要功能是从磁盘中读取数据,那么让它多线程是不是一个好主意?
- c++ /Windows多线程同步/数据共享
- 可以安全地共享指针数据的多线程库
- 在执行多线程处理时保存数据
- std::线程c++.更多线程相同的数据
- 如何同步多线程程序中正在处理的数据
- 如果一个且只有一个线程被停止,可以从多线程进程中跟踪读/写数据