I'm rewriting this c# code to 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
}
This works fine - each order has sequential id even if AssignInternalId
is called from different threads parallel.
What is closest c++ equavalent to this code? Should I declare InternalId
as std::atomic<int>
and then just use ++
? Or I should declare InternalId
as int
and use something like std::atomic_fetch_add
?