jav*_*red 1 c++ multithreading
我正在将此 c# 代码重写为 c++:
public class LightOrder
{
private static int internalIdCounter;
public int InternalId { get; private set; }
// i control myself to call this method exactly once for each order
public void AssignInternalId(int ordersExecutorId)
{
// if InternalId is already assigned, i.e. != 0, i can print error or something
InternalId = Interlocked.Increment(ref internalIdCounter);
// more
}
// more
}
Run Code Online (Sandbox Code Playgroud)
这工作正常 - 即使AssignInternalId从不同的线程并行调用,每个订单也具有顺序 ID 。
与此代码最接近的 C++ 等效项是什么?我应该声明InternalId为std::atomic<int>然后使用++吗?或者我应该声明InternalId为int并使用类似的东西std::atomic_fetch_add?
我应该声明
InternalId为std::atomic<int>然后使用++吗?
是的。
或者我应该声明
InternalId为int并使用类似的东西std::atomic_fetch_add?
不。像这样的函数atomic_fetch_add只适用于原子类型( 的特化atomic,或者像 的类型atomic_int),所以你仍然需要一个原子类型。
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |