这里有一些C++代码可以从多个线程并行访问.它有一个关键部分:
lock.Acquire();
current_id = shared_id;
// small amounts of other code
shared_id = (shared_id + 1) % max_id;
lock.Release();
// do something with current_id
Run Code Online (Sandbox Code Playgroud)
lock变量的类是POSIX互斥实现的包装器.由于模块操作,不可能使用原子操作.
带有O3标志的gcc编译器是否可能优化代码,以便在锁定之前移动current_id的赋值?
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |