執行緒間通訊方式

2021-05-23 14:36:54 字數 766 閱讀 5264

執行緒間通訊方式 收藏

執行緒間通訊可以通過下列三種方法:

1)使用全域性變數實現執行緒間通訊

2)使用訊息實現執行緒間通訊

3)使用cevent類實現執行緒間通訊 

使用全域性變數實現執行緒間通訊:

定義乙個全域性變數,不同的執行緒間可以通過修改全域性變數的值來進行通訊。例如:定義乙個控制線程的全域性變數

volatile int  threadcontroller;

當 threadcontroller值為1時,執行緒running;當threadcontroller為0時,執行緒stop, 所以可以通過修改threadcontroller的值來控制線程的執行。

使用訊息實現執行緒間通訊:

步驟:

1)在view.h中定義訊息:

例如:  

const wm_thread_sendmess=wm_user+20;

2)在view.h中新增訊息函式宣告:    

使用cevent類實現執行緒間通訊

(1) event物件:有兩種狀態:通訊狀態和非通訊狀態;

(2)建立乙個cevent類的物件:cevent  threadstart;它預設處在未通訊狀態;

(3)threadstart.setevent();使其處於通訊狀態;

(4)呼叫waitforsingleobject()來監視cevent物件;

::waitforsingleobject(threadstart.m_hobject, infinite

程序間通訊方式和執行緒間通訊方式

1.管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2.訊號量 semophore 訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。...

程序間通訊方式和執行緒間通訊方式

1.管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。缺點 速度慢,容量有限,只有父子程序能通訊 2.有名管道 namedpipe 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。但速度慢。3.訊號量...

程序間通訊的方式?執行緒間通訊的方式?

管道 命名管道 訊號量 訊息佇列 訊號及共享記憶體只適用於本地程序間通訊,套接字則可用於遠端通訊,因而一般用於網路程式設計。部分概念解釋 匿名管道是在快取中開闢的輸出和輸入檔案流的空間,只能用於父子關係的程序之間。因為父子程序的輸入和輸出檔案描述符是一致的。命名管道是一種實際存在的fifo檔案,稱作...