Wal*_*ter 5 c++ multithreading openmp c++11
我目前正在使用openMP来编写在多核节点上运行的代码.openMP有一个特定的内存模型,可以保证在获取锁定时,在不同内核上运行的线程之间同步内存.
我考虑使用C++ 11构造(std::thread使用std::mutex和std::lock)而不是openMP(因为它们具有更大的灵活性),并想知道处理器之间的内存同步是否/如何保证?如果没有,我该如何执行呢?
Cub*_*bbi 10
该标准对std::mutex§30.4.1.2[thread.mutex.requirements.mutex]/6-25中的同步提出了以下保证.
表达式m.lock()应该是格式良好的,并具有以下语义
同步:对同一对象的先前解锁()操作应与此操作同步.
而且,同样地,
表达式m.unlock()应该是格式良好的,并具有以下语义
同步:此操作与后续锁定操作同步,后者获取对同一对象的所有权.
(其中"与...同步"是$ 1.10中解释的特定术语,尽管通过阅读C++ Concurrency In Action更容易理解)
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |