dword waitforsingleobject(
handle hhandle,
dword dwmilliseconds
);
功能說明:
等待函式可使執行緒自願進入等待,直到乙個特定的核心物件變為已通知狀態為止。
hhandle 核心物件控制代碼
dwmilliseconds 等待事件,單位是毫秒,infinite(-1)一直等待,直到核心物件變為已通知
返回值:
wait_object_0(0) 等待物件變為已通知
wait_timeout(0x102) 超時
當執行緒正在執行的時候,執行緒核心物件處於未通知狀態
當執行緒終止執行的時候,它就變為已通知狀態
在核心中就是個bool值,執行時false,結束true
dword waitformultipleobjects(
dword ncount, //幾個物件
const handle * lphandle, //物件陣列的位址
bool bwaitall, //等待型別,true,等所有變為通知; false,等待乙個變為通知
dword dwmilliseconds
);eg:
handle hhandlearr[2];
hhandlearr[0] = ::createthread(null,0,threadproc1,null,0,null);
hhandlearr[1] = ::createthread(null,0,threadproc2,null,0,null);
::waitformultipleobjects(2, hhandlearr,true,2000);//2s
closehandle(hhandlearr[0]);
closehandle(hhandlearr[1]);
互斥體,可以跨程序進行互斥控制
handle createmutex(
lpsecurity_attributes lpmutexattributes,
bool binitialowner,
lpcstr lpname //互斥體名字
);openmutex()
waitforsingleobject ()
releasemutex()
互斥體與臨界區的區別
臨界區只能用於單個程序間的執行緒控制
互斥體可以設定等待超時,但臨界區不能
執行緒意外終結時,mutex可以避免無限等待
mutex效率沒有臨界區高(互斥體是核心物件,所以可以跨程序)
事件
createevent();
setevent();設為已通知
releaseevent();設為未通知
訊號量
handle createsemaphorea(
lpsecurity_attributes lpsemaphoreattributes, //一般為null
long linitialcount,//初始資源數量,0時不傳送訊號
long lmaximumcount,//表示最大併發數量。linitialcount<= lmaximumcount
lpcstr lpname//訊號量的名稱,null表示匿名信號量
);opensemaphore()
releasesemaphore()遞增當前訊號量的計數值
多執行緒筆記
1 stdin fileno 在unix一些系統呼叫中使用到stdin fileno表示標準輸入,stdout fileno表示標準輸出,stderr fileno表示標準出錯,使用時需要加標頭檔案 在unix下還有stdin,stdout,stderr表示同樣的含義。stdin fileno與st...
多執行緒筆記
一.程序 就是cpu所要執行的乙個任務 自己理解的 執行緒 執行緒是乙個併發執行的順序流,乙個程序包括多個順序執行流程,這執行流程稱為執行緒 就是任務中許多的 二.執行緒排程分配cpu的時間片段給不同的執行緒,得到時間片段的執行緒被cpu執行,其他執行緒等待,執行緒排程會盡可能的分配時間片段取執行。...
多執行緒筆記
1.執行緒的建立方法 繼承thread類 實現runnable介面 重寫run方法 實現callable介面 重寫call方法 2.靜態 簡單來說,靜態 就是 物件和目標物件實現同樣的介面,物件會將目標物件傳遞進來,用目標物件來呼叫方法並新增自己的操作。new thread system.out.p...