queue非线程安全及多线程解决办法
来源:互联网 发布:立领衬衫 知乎 编辑:程序博客网 时间:2024/05/21 01:55
stl的queue是非线程安全的
比如下面的应用场景:
子线程对queue队列做push操作,同时主线程对queue执行pop操作,则可能会发生异常。
解决办法:
方案1:
自己写一个循环队列,则不存在同时push与pop的问题。
方案2:
加一个全局互斥锁,核心代码如下:
#defineLOCK_G_MSGQUEUE()\while(g_free_lock == true)\{\usleep(10*1000);\}\g_free_lock = true;#defineUNLOCK_G_MSGQUEUE()\g_free_lock = false;
在push和pop前调用
LOCK_G_MSGQUEUE();在push和pop后调用
UNLOCK_G_MSGQUEUE();
0 0
- queue非线程安全及多线程解决办法
- servlet非线程安全,解决办法
- 多线程变量--- 线程安全的queue
- 多线程编程-- 线程安全的queue II
- 多线程之 线程安全与非线程安全
- 多线程之 线程安全与非线程安全
- 多线程之 线程安全与非线程安全
- 【java】【多线程】线程安全与线程非安全【1】
- 多线程之 线程安全与非线程安全
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- Java多线程总结之线程安全队列Queue
- LINUX 的Singal 信号 定义 说明
- SVN常用命令之update
- 文章标题
- Java 网络编程(一) 网络基础知识
- bootstrap警示框
- queue非线程安全及多线程解决办法
- 希尔排序算法
- 路径通配符含义
- 2015软件测试开发工作总结
- C语言模拟C++类
- web调试工具-Fiddler断点设置(二)
- android 6.0指纹模块学习 1
- 【学习】IXP:Internet Exchange Point
- Java 网络编程(二) 两类传输协议:TCP UDP