多執行緒的筆記

2021-09-08 12:52:30 字數 1932 閱讀 8410

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...