vc 多執行緒程式設計

2021-08-22 07:42:55 字數 1347 閱讀 8893

vc++中的多執行緒程式設計:

//createamutexwithnoinitialowner.必須要建立乙個控制代碼

hmutex

=createmutex(null,

//nosecurityattributes

false,

//initiallynotowned

"mutextoprotectdatabase");

//nameofmutex

//這個控制代碼只想訊號量,第乙個引數一半為null,第二個(初始化時是否被獲得)false為現在可以被任何人使用

//第三個引數是為訊號量起名,方便以後查詢該訊號量

if(hmutex

==null)

...

boolfunctiontowritetodatabase(handlehmutex)

......

break

;}//cannotgetmutexownershipduetotime-out.

case

wait_timeout:

return

false;

//gotownershipoftheabandonedmutexobject.

case

wait_abandoned:

return

false;

}return

true;

dword dwwaitresult 只是為了判斷訊號量的歸誰所有。 waitforsingleobject() 相當與p()操作,引數有兩個:第乙個是訊號量,第二個是等待時間。infinite代表無限等待。5000l代表等待5秒,如果5秒內獲得訊號量,dwwaitresult== wait_object_0,如果5秒沒有得到訊號量,則dwwaitresult== wait_timeout,而wait_abandoned代表操作失敗。

releasemutex(hmutex)相當於v()操作。引數為訊號量。

如果希望在乙個函式中啟動執行緒並呼叫該函式,應該這樣寫**

void reading(void* name);這個函式一定要是void的返回型別。然後可以在呼叫函式中這樣寫:

_beginthread(&reading,0,(void*)english); 其中第一引數是要呼叫函式的函式指標。第二個函式是執行緒優先順序一般為0。第三個引數是個void指標,一般用來傳函式的引數。如果想傳多個引數只要把那個指標指向乙個結構體就可以。到函式那裡再轉換為相應的結構體指標就可以了。

sleep(5000l);這個函式一般是用來讓執行緒睡眠的。引數是unsigned long,現在是睡5秒。

這只是多執行緒的程式設計常用到的幾個函式。對於多執行緒程式設計還要注意同步和死鎖,在這篇文字就不討論了。

vc 多執行緒程式設計

mfc2.afxbeginthread函式建立和初始化cwinthread物件,啟動並返回位址。3.pthread new cwinthread pthread m bautodelete false pthread afxbeginthread startandclosethreadproc,nu...

VC 多執行緒程式設計入門示例

程式分析 建立乙個子執行緒,當主線程開始執行的時候,子執行緒同時開始執行,由於資源有限 如本程式中的螢幕列印 子執行緒和主線程執行速度不同,因此會隨機交替執行。如果希望子執行緒和主線程有序的交替執行的話,可以加乙個互斥鎖。threadtest.cpp 定義控制台應用程式的入口點。include st...

vc 多執行緒程式設計 SOCKET通訊

vc 多執行緒程式設計 socket通訊 include stdafx.h include 伺服器端程式 dword winapi answerthread lpvoid lparam int main sockaddr in service service.sin family af inet s...