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