STL的list容器仅这样操作的两个线程是否是安全的?
请教大家,仅这样操作的两个线程是否是安全的:
std::list<CData*> m_listTab;
std::list<CData*>::iterator iter;
thread1()
{
while(1)
{
for(iter = m_listTab.begin();
iter!= m_listTab.end();
iter++)
{
CData* pData=*iter;
//...
}
}
}
thread2()
{
while(1)
{
CData* pData = new CData();
plistMgr->m_listTab.push_back(pData);
//...
}
}
在thread1中只做遍历和读写节点内容的操作;
在thread2中只做push_back新节点的操作。
没读STL源码,请问仅这样操作的两个线程处理过程中数据是否是安全呀。
谢谢!