使用_beginthreadex()函式,需使用標頭檔案,且進行編譯環境的設定(詳見上篇文章)。
執行緒的建立和終止c++**:
#include
#include
#include
using
namespace
std;
static
unsigned _stdcall thread1(void *param);
static
unsigned _stdcall thread2(void *param);
int main()
static
unsigned _stdcall thread1(void *param)
static
unsigned _stdcall thread2(void *param)
**詳解與createthread()相同的部分不再贅述
_beginthreadex(
void *secattr,
unsigned stacksize,
unsigned (__stdcall *threadfunc)(void *),
void *param,
unsigned flags,
unsigned *threadid);
_beginthreadex()的引數類似於createthread()的引數,且與createthread()指定的引數有相同的含義。
函式說明:
1. 第乙個引數secattr是描述執行緒核心物件安全屬性的指標,設定為null,就會使用預設的安全描述符。
2. 第二個引數stacksize表示執行緒棧空間大小。如果為0(1mb),那麼這個執行緒堆疊的大小與建立它的執行緒相同。
3. threadfunc表示新執行緒所執行的執行緒函式位址,多個執行緒可以使用同乙個函式位址,執行緒的執行一直持續到執行緒函式返回。 這個函式的位址在下面的函式中指定。每個執行緒函式都必須具有這樣的原型。執行緒函式的位址(也就是執行緒的入口點)在thread中指定。對於_beginthreadex(),執行緒函式的原型如下:
static unsigned_stdcall thread(void *param)
這個原型在功能上等價於createthread()的執行緒函式的原型,但是它使用了不同的型別名稱。
stdcall的呼叫約定意味著:
1)引數從右向左壓入堆疊;
2)函式自身修改堆疊;
3)函式名自動加前導的下劃線,後面緊跟乙個@符號,其後緊跟著引數的尺寸。。
4.第四個引數param是傳給執行緒函式的引數。
5.第五個引數flags標誌了執行緒的執行狀態,為0表示執行緒建立之後立即就可以進行排程,如果為create_suspended,執行緒則以掛起狀態建立並等待執行,這樣它就無法排程,直到呼叫resumethread()。
6.第六個引數threadid將以的長整型返回執行緒的id號,傳入null表示不需要返回該執行緒id號。
bool getexitcodethread (
handle hthread,
lpdword lpexitcode
);
hthread long,想獲取退出**的乙個執行緒的控制代碼
lpexitcode long,用於裝載執行緒退出**的乙個長整數變數。如執行緒尚未中斷,則設為常數still_active。
Python簡單多執行緒例項
剛剛學習了python的多執行緒,為了測試多執行緒對處理資料的影響,自己寫了乙個簡單的例項實踐一下多執行緒 coding utf 8 python多執行緒例項 import threading import datetime import time defhandleurllista 執行緒a 如果...
串列埠通訊 多執行緒簡單例項
rs 232串列埠 include reg52.h typedef unsigned char uint8 typedef unsigned int uint16 sbit s2 p2 1 sbit en p2 5 uint8 arg uint8 counter 0 void init void 微...
C 多執行緒程式設計簡單例項
using system using system.collections using system.collections.generic using system.threading 在開發中經常會遇到執行緒的例子,如果某個後台操作比較費時間,我們就可以啟動乙個執行緒去執行那個費時的操作,同時程...