stl list 提供了丰富的功能 push_back ,遍历等功能
想问下,如果一个,stl有没有提供互斥保护的功能 ,如果某个线程正在
删除某一个list元素,而另外一个线程 往list 添加元素会不会导致不可预知错误?
实际多线程编程中有没有必要 加入互斥保护?
请各位高手回答。
stl list 提供了丰富的功能 push_back ,遍历等功能
想问下,如果一个,stl有没有提供互斥保护的功能 ,如果某个线程正在
删除某一个list元素,而另外一个线程 往list 添加元素会不会导致不可预知错误?
实际多线程编程中有没有必要 加入互斥保护?
请各位高手回答。
收起
用两个list 交换使用
只需要保护,交换 list 的动作,保证交换的是完整的list,而不是正在使用到一半的list(不是已经读写了该list,而是已经使用完毕了)就可以了
stl 容器一般都是没有加锁的,不然stl还得需要知道具体的平台,因为不同平台锁的api不一样
所有stl 容器对应多线程来说 都是没加锁的,要支持多线程,应该自己添加mutex
http://blog.csdn.net/zdl1016/article/details/4161427
1)在每次调用容器的成员函数期间都要锁定该容器。
2)在每个容器返回的迭代器(例如通过调用begin或end)的生存期之内都要锁定该容器。
3)在每个在容器上调用的算法执行期间锁定该容器。
要的,stl非线程安全
如果是多线程编程的话一定是要加锁的,防止一个线程正在删除容器列表的节点,另外一个在访问某个元素时内存地址异常导致崩溃
报告相同问题?