步驟:
1. 首先宣告乙個全域性的event物件
handle hrequestexitevent = false;
2. 在主線程中建立這個event物件
hrequestexitevent = createevent(null, true, false, null);
注意:此處的第三個引數應該使用false,因為如果使用true在事件建立開始就是處於
激發狀態,這樣就立刻結束執行緒了,所以此處應該使用false作引數
waitforsingleobject(hrequestexitevent, 0)
注意:此處的此處的第二個引數為0,這裡使用了waitforsingleobject()函式乙個很重
要的用途,設定這個引數為0,是你能夠檢查handle的狀態並立刻返回,沒有片刻停留,
如果handle已經備妥,這個函式會成功並傳回wait_objet_0,否則這個函式立刻傳
回wait_timeout。
4. 在主線程中需要結束該執行緒的地方呼叫如下語句設定event物件為激發狀態
setevent(hrequestexitevent);
這樣便可安全的結束乙個執行緒
#define win32_lean_and_mean
#include
#include
#include
#include
#include "mtverify.h"
dword winapi threadfunc(lpvoid);
handle hrequestexitevent = false; //設定全域性event物件
int main()
dword winapi threadfunc(lpvoid p)
}printf("pi = %.4g/n", (double)inside / i * 4);
return 0;
}
通過Event事件正確結束執行緒
步驟 1 首先宣告乙個全域性的event物件 handle hrequestexitevent false 2 在主線程中建立這個event物件 hrequestexitevent createevent null,true,false,null 注意 此處的第三個引數應該使用false,因為如果使...
執行緒的正確結束方式
在使用c語言進行多執行緒程式設計時,最重要的是執行緒怎麼結束,而不是它怎麼開始。多執行緒程式設計的主要問題,是需要執行緒 正確 結束,我們在程式設計中應該盡量避免使用系統提供的使執行緒強制結束的函式,而應該使用一定的同步方式,保證執行緒分配的資源得到正確地處理,避免記憶體洩漏。很多人在進行多執行緒程...
Windows執行緒同步之事件 Event
設定為有訊號狀態setevent 設定為無訊號狀態resetevent 傳送訊號脈衝pulseevent 開啟已存在的命名物件openevent 關閉事件物件closeevent 等待訊號為有訊號或超時waitforsingleobject 建立或開啟事件物件createevent event是wi...