首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于STL容器的多线程支持有关问题

2012-04-16 
关于STL容器的多线程支持问题假设有一个链表:一共有:A-B-C-D-E-F 六个元素在多线程系统当中,一共有两个线

关于STL容器的多线程支持问题
假设有一个链表:
一共有:
A-B-C-D-E-F 六个元素
在多线程系统当中,一共有两个线程:
线程一、线程二;

线程一:
list<x>::iterator iter 
iter=B;

这时候,线程一被线程二打断:
list::erase(B);
......
当线程一重新执行时
*iter; //重新访问迭代器

这样的操作会使系统崩溃吗?

如果会的话,在多线程的情况下怎么防止呢?

[解决办法]
1不能使系统崩溃,但是能使你程序崩溃.
防止不会,,感觉还是不用来的好.
或者,只要是 一个线程在执行与这个list相关的操作之前,就lock,操作完了再unlock.
这样就不会发生这种情况了.

热点排行