在上面的问题中,显然我们可以使用<table id="cacheTable" class="table-striped">
</table>
来保持线程安全。我想知道何时使用哪一个。
std::mutex
和
classs A
{
std::atomic<int> x;
public:
A()
{
x=0;
}
void Add()
{
x++;
}
void Sub()
{
x--;
}
};
答案 0 :(得分:5)
根据经验,对于POD类型使用std::atomic
,其中基础专业化将能够使用巧妙的东西,如CPU上的总线锁(这将不会给您带来比管道转储更多的开销),甚至旋转锁。在某些系统上,int
可能已经是原子的,因此std::atomic<int>
会有效地专注于int
。
对非POD类型使用std::mutex
,请记住,获取互斥锁的速度至少比总线锁定慢一个数量级。
如果您仍然不确定,衡量表现。