您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> stl list 在什么情况下需要加锁

stl list 在什么情况下需要加锁

来源:网络整理     时间:2016/8/31 22:26:11     关键词:

关于网友提出的“ stl list 在什么情况下需要加锁”问题疑问,本网通过在网上对“ stl list 在什么情况下需要加锁”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: stl list 在什么情况下需要加锁
描述:

push_back size erase begin()->end();          什么情况下需要加锁
我看到资料说他与vector 不同 他是一个元素一个空间,所以应该道理来说 push_back 与 begin end 和size erase 都没影响才对 ,对不对? 我检查代码发现 push_back 的时候崩溃了。但是在操作的时候只有size erase begin end 这些 这些会影响push_back?


解决方案1:

size erase begin end 在访问的时候,在多线程环境下,一般都需要枷锁的,因为在一个线程处理LIST的时候。可能另外一个线程修改了数据,比如size 如果一个线程在读长度的时候,另外一个线程删除一个NODE的话, size 会改变,这个时候不加锁。你读到长度可能不对。因为在另外一个线程以及删除了一个节点。 erase begin end 等等同样。

解决方案2:

多线程操作同一个list就需要

解决方案3:

引用 5 楼 aaadddzxc 的回复:
哪种  读还是写操作?

两个线程以上进行插入或者删除操作的时候!都要加锁! 解决方案4:

引用 5 楼 aaadddzxc 的回复:
哪种  读还是写操作?

安全起见,调用std::list中非const的成员函数时,就得考虑与其他操作互斥。 解决方案5:

引用 3 楼 aaadddzxc 的回复:
他只是释放自己空间和push_back 有可能会同时改! 这个有可能会出问题?

删了后别的线程可能会使用已经释放的东西 解决方案6:

同时改有问题吧


以上介绍了“ stl list 在什么情况下需要加锁”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3689272.html

相关图片

相关文章