我有多個線程修改一個stl向量和一個stl列表。
我想避免如果容器爲空需要鎖定STL是否爲空()線程安全?
下面的代碼是線程安全嗎?如果項目是一個列表或地圖呢?
class A
{
vector<int> items
void DoStuff()
{
if(!items.empty())
{
AquireLock();
DoStuffWithItems();
ReleaseLock();
}
}
}
感謝您的回覆。爲了澄清這個問題: 另一個線程將添加到項目。沒有其他線程將從項目中刪除 - 刪除將只發生在DoStuffWithItems()內部,並且只有一個線程調用DoStuff()。 好吧,如果items.empty()在另一個線程添加到它時返回false。它不好,如果items.empty()導致應用程序崩潰,如果另一個線程添加到它 – 2010-11-17 15:15:53