第0步:宣告乙個執行緒、乙個事件
cwinthread* m_hthread; //接收執行緒的控制代碼
handle hstarteven; //
第一步:定義自己的訊息
#define my_message wm_user+100
第二步:在傳送訊息的執行緒中
//得到需要傳輸的資料
cstring str;
getdlgitemtextw(idc_offset_v,str);
//將傳輸的資料轉化成char*
char *ch = new char[10];
widechartomultibyte(cp_acp,0,str,-1,ch,10,null,null);
//建立event物件,讓postthreadmessage等待目標執行緒建立乙個訊息佇列
hstarteven = ::createeventa(0,false,false,0);
if (hstarteven == 0)
if(m_hthread == 0)
//不斷呼叫postthreadmessage函式,直到函式成功。 這是因為當執行緒收到這樣的函式以後,
//會自動建立訊息佇列。
while(!m_hthread->postthreadmessage(um_message,(wparam)ch,0))
第三部:在接收訊息的執行緒中
msg msg;
//目標執行緒通過呼叫peekmessage強制系統建立乙個訊息佇列
peekmessage(&msg,null,wm_user+100,wm_user+100,pm_noremove);
//判斷是否有訊息傳遞過來
if (!setevent(hstarteven))
//如果傳送的訊息是不間斷的,則用while進行接收;如果是有條件傳送,則採用判斷語言if進行接收
while(true)
} }
程序中線程間通訊
一般而言,應用程式中的乙個次要執行緒總是為主執行緒執行特定的任務,這樣,主線程和次要執行緒間必定有乙個資訊傳遞的渠道,也就是主線程和次要執行緒間要進行通訊。這種執行緒間的通訊不但是難以避免的,而且在多執行緒程式設計中也是複雜和頻繁的,下面將進行說明。由於屬於同乙個程序的各個執行緒共享作業系統分配該程...
關於子執行緒與主線程與hander通訊
子執行緒不能更新ui,主線程不能做耗時操作。操做流程是 子執行緒耗時完畢傳給handler sendmessage再傳給messagequeue再給looper最後傳給ui執行緒。arg1 arg2傳遞整數型。obj傳輸大部分。what屬性判斷。通過time integer.parseint ed1...
Android UI主線程與子執行緒
乙個android 程式預設情況只有乙個程序,但是乙個程序可以有多個執行緒。其中有乙個ui 執行緒也稱為ui主線程,ui thread在android程式執行的時候就被建立,主要是負責控制ui介面的顯示 更新和控制項互動。所有的android應用程式元件 包括activity service bro...