一般而言,應用程式中的乙個次要執行緒總是為主執行緒執行特定的任務,這樣,主線程和次要執行緒間必定有乙個資訊傳遞的渠道,也就是主線程和次要執行緒間要進行通訊。這種執行緒間的通訊不但是難以避免的,而且在多執行緒程式設計中也是複雜和頻繁的,下面將進行說明。
由於屬於同乙個程序的各個執行緒共享作業系統分配該程序的資源,故解決執行緒間通訊最簡單的一種方法是使用全域性變數。對於標準型別的全域性變數,我們建議使用volatile 修飾符,它告訴編譯器無需對該變數作任何的優化,即無需將它放到乙個暫存器中,並且該值可被外部改變。如果執行緒間所需傳遞的資訊較複雜,我們可以定義乙個結構,通過傳遞指向該結構的指標進行傳遞資訊。
我們可以在乙個執行緒的執行函式中向另乙個執行緒傳送自定義的訊息來達到通訊的目的。乙個執行緒向另外乙個執行緒傳送訊息是通過作業系統實現的。利用windows作業系統的訊息驅動機制,當乙個執行緒發出一條訊息時,作業系統首先接收到該訊息,然後把該訊息**給目標執行緒,接收訊息的執行緒必須已經建立了訊息迴圈。
Android中線程間的通訊
handler類 一 概述 例如 handler在工作執行緒中傳送訊息,該訊息傳送至訊息佇列中,等待處理。在主線程中handler從訊息佇列中接 收訊息,並根據訊息中的資訊決定如何更新ui。每個handler例項都會繫結到建立它的執行緒中。handler可以傳送訊息或runnable值某個執行緒的訊...
MFC中線程間通訊 主線程與子執行緒間的通訊
第0步 宣告乙個執行緒 乙個事件 cwinthread m hthread 接收執行緒的控制代碼 handle hstarteven 第一步 定義自己的訊息 define my message wm user 100第二步 在傳送訊息的執行緒中 得到需要傳輸的資料 cstring str getdl...
程序間通訊和執行緒間通訊
程序間通訊 ipc,interprocess communication 是一組程式設計介面,讓程式設計師能夠協調不同的程序,使之能在乙個作業系統裡同時執行,並相互傳遞 交換資訊。這使得乙個程式能夠在同一時間裡處理許多使用者的要求。因為即使只有乙個使用者發出要求,也可能導致乙個作業系統中多個程序的執...