handle createthread(
__in sec_attrs securityattributes,
__in ulong stacksize, // initial stack size
__in sec_thread_start startfunction, // thread function
__in pvoid threadparameter, // thread argument
__in ulong creationflags, // creation option
__out pulong threadid // thread identifier
);
在這裡我們只用到了第三個和第四個引數,第三個引數傳遞了乙個函式的位址,也是我們要指定的新的執行緒,第四個引數是傳給新執行緒的引數指標。
#include "stdafx.h"
#include "iostream"
#include
using
namespace
std;
dword winapi func(lpvoid lpparameter)
}int _tmain(int argc, _tchar* argv)
return
0;}
編譯執行發現主線程(_tmain函式)和自定義程序(func函式)是隨機交替進行的;
其中sleep()函式是用來暫停執行緒的執行的,原型如下:
void winapi sleep(
__in dword dwmilliseconds
);
引數dwmilliseconds單位是毫秒,比如sleep(1000)表示暫停1秒;
根據上述程式**我們知道每當fun函式和main函式輸出內容後就會輸出換行,但是根據執行結果我們看到的確是有的時候程式輸出換行了,有的時候確沒有輸出換行,甚至有的時候是輸出兩個換行。這是什麼原因呢?
將要輸出endl(也就是清空緩衝區並換行,在這裡我們可以不用理解什麼事緩衝區),但此時main函式確得到了執行的機會,此時fun函式還沒有來得及輸出換行就把cpu讓給了main函式,而這時main函式就直接在fun display!後輸出main display!,至於為什麼有的時候程式會連續輸出兩個換行,讀者可以採用同樣的分析方法來分析,在這裡我就不多講了,留給讀者自己思考了。
這涉及到多執行緒的同步問題。對於乙個資源被多個執行緒共用會導致程式的混亂,我們的解決方法是只允許乙個執行緒
擁有對共享資源的獨佔,這樣就能夠解決上面的問題了。
handle createmutex(
lpsecurity_attributes lpmutexattributes,
bool binitialowner, // initial owner
lpctstr lpname // object name
);
該函式用於創造乙個獨佔資源,第乙個引數我們沒有使用,可以設為null,第二個引數指定該資源初始是否歸屬
建立它的程序,第三個引數指定資源的名稱。
呼叫**示例如下:
handle hmutex = createmutex(null,true,"screen");
這條語句創造了乙個名為screen並且歸屬於建立它的程序的資源。
bool releasemutex(handle hmutex // handle to mutex);
該函式用於釋放乙個獨佔資源,程序一旦釋放該資源,該資源就不再屬於它了,如果還要用到,需要重新申請得到該資源。申請資源的函式如下:
dword waitforsingleobject(
handle hhandle, // handle to object
dword dwmilliseconds // time-out interval
);
第乙個引數指定所申請的資源的控制代碼,第二個引數一般指定為infinite,表示如果沒有申請到資源就一直等待該資源,如果指定為0,表示一旦得不到資源就返回,也可以具體地指定等待多久才返回,單位是毫秒。
#include "stdafx.h"
#include "iostream"
#include
using
namespace
std;
handle hmutex;
dword winapi func(lpvoid lpparameter)
}int _tmain(int argc, _tchar* argv)
return
0;}
C 多執行緒程式設計(真實入門!)
1 createthread建立執行緒的過程如下 c 多執行緒程式設計 真實入門!kprogram的部落格 csdn部落格 c 多執行緒程式設計 beginthread 建立執行緒過程如下 c 多執行緒 beginthread 和 beginthreadex xuanyin235的專欄 csdn部落...
Linux 多執行緒程式設計入門
建立執行緒 intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 引數 thread 輸出執行緒id attr ...
iOS多執行緒程式設計入門
程序 執行緒 區 import inte ce viewcontroller uiviewcontroller end 複製 補充說明 補充一點 如果我們的程式中 出現了多個執行緒競爭同乙個資源的情況,這個時候 我們需要對這個資源進行同步保護 synchronized 讓執行緒處於乙個排隊狀態 當乙...