我有多个线程修改一个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