queue非執行緒安全及多執行緒解決的方法

2022-09-17 22:57:23 字數 485 閱讀 7875

stl的queue是非執行緒安全的

比方以下的應用場景:

子執行緒對queue佇列做push操作,同一時候主線程對queue執行pop操作,則可能會發生異常。

解決的方法:

方案1:

自己寫乙個迴圈佇列,則不存在同一時候push與pop的問題。

方案2:

加乙個全域性相互排斥鎖。核心**例如以下:

#define	lock_g_msgqueue()	\

while(g_free_lock == true) \

\g_free_lock = true;

#define unlock_g_msgqueue() \

g_free_lock = false;

在push和pop前呼叫

lock_g_msgqueue();
在push和pop後呼叫

unlock_g_msgqueue();

多執行緒queue

一 class queue.queue maxsize 0 佇列 先進先出 import queue q queue.queue q.put first q.put second q.put third print q.get print q.get print q.get 結果 先進先出 firs...

多執行緒之執行緒queue

有三種不同的用法 class queue.queue maxsize 0 佇列 先進先出 按 ctrl c 複製 按 ctrl c 複製 class queue.lifoqueue maxsize 0 堆疊 last in fisrt out import queue q queue.lifoque...

python 多執行緒 queue

python的queue設計的是執行緒安全的,所以大傢伙放心用吧!python多執行緒的一種簡單的實現如下 usr bin env python coding utf 8 import threading import time deffun argv print in argv time.slee...