windows下C多執行緒

2021-07-05 17:25:37 字數 2390 閱讀 6518

看到乙個簡單的windows程式設計例項,給大家分享一下

這個例項主要用createthread為乙個宣告的方法建立乙個程序,這個被建立的方法必須用dword winapi 修飾,需要有lpvoid 型別的引數,如果沒有這個引數,在建立程序時要對這個方法強制型別中轉換

dword winapi mythread();//沒有引數的方法

createthread(null,0,(lpthread_start_routine )mythread,null,0,null);

//  用lpthread_start_routine對沒有引數的mythread強制型別裝換

createthread第四個引數是為要建立程序的方法傳遞的引數,當沒有引數時填null

其他引數預設

在windows多執行緒例項如下:

#include#include#include using namespace std;

dword winapi mythread(lpvoid argv)

cout<< s << endl;

}while(s!="exit" && s!="quit");

return 0;

}

這段程式主要用了createthread方法。

createthread是windows的 api函式。該函式在

主線程的基礎上建立乙個新執行緒。

msdn中createthread原型:

handle createthread(

lpsecurity_attributes lpthreadattributes,//sd

size_t dwstacksize,//initialstacksize

lpthread_start_routine lpstartaddress,//threadfunction

lpvoid lpparameter,//threadargument

dword dwcreationflags,//creationoption

lpdword lpthreadid//threadidentifier

)引數說明

lpthreadattributes:指向

security_attributes型態的結構的指標。在windows 98中忽略該引數。在windows nt中,null使用預設安全性,不可以被子執行緒繼承,否則需要定義乙個結構體將它的binherithandle成員初始化為true

dwstacksize,設定初始棧的大小,以位元組為單位,如果為0,那麼預設將使用與呼叫該函式的執行緒相同的棧空間大小。任何情況下,windows根據需要動態延長

堆疊的大小。

lpstartaddress,指向執行緒函式的

指標,形式:@函式名,函式名稱沒有限制,但是必須以下列形式宣告:

dword winapi 函式名 (lpvoid lpparam) ,格式不正確將無法呼叫成功。

//也可以直接呼叫void型別

//但lpstartaddress要這樣通過lpthread_start_routine轉換如: (lpthread_start_routine)myvoid

void myvoid()

lpparameter:向執行緒函式傳遞的引數,是乙個指向結構的

指標,不需傳遞引數時,為null。

dwcreationflags :執行緒標誌,可取值如下

(1)create_suspended(0x00000004):建立乙個掛起的執行緒,

(2)0:表示建立後立即啟用。

(3)stack_size_param_is_a_reservation(0x00010000):dwstacksize引數指定初始的保留堆疊 的大小,否則,dwstacksize指定提交的大小。該標記值在

windows 2000/nt and windows me/98/95上不支援。

lpthreadid:儲存新執行緒的id。

返回值:函式成功,返回執行緒控制代碼;函式失敗返回false。若不想返回執行緒id,設定值為null。

函式說明:

建立乙個執行緒。

語法:hthread = createthread (&security_attributes, dwstacksize, threadproc,pparam, dwflags, &idthread) ;

一般並不推薦使用 createthread函式,而推薦使用rtl

庫里的system單元中定義的 beginthread函式,因為這除了能建立乙個執行緒和乙個入口函式以外,還增加了幾項保護措施。

在mfc程式中,應該呼叫afxbeginthread函式,在

visual c++程式中應呼叫_beginthreadex函式。

Windows下C 多執行緒同步

程式 是計算機指令的集合,它以檔案的形式儲存在磁碟上。而程序通常被定義為乙個正在執行程式的例項,是乙個程式在其自身位址空間的依次執行活動。程序 執行緒 由執行緒的核心物件和執行緒棧組成 當多執行緒訪問全域性變數時需要多執行緒同步 互斥物件 事件物件 關鍵 段 互斥物件 互斥獨享可以看做是一把房間鑰匙...

Windows下C 實現多執行緒

有時候我們想在乙個類中實現多執行緒,主線程在某些時刻獲得資料,可以 通知 子執行緒去處理,然後把結果返回。下面的例項是主線程每隔2s產生10個隨機數,將這10隨機數傳給多執行緒類,讓它接收到資料後馬上列印出來。首先看類的定義 cpp view plain copy print?pragma once...

Windows下多執行緒常用函式

分類 c ui多執行緒 2011 11 03 16 13 594人閱讀收藏 舉報windows attributes winapi null security 多執行緒 1.執行緒建立 該函式在其呼叫程序的程序空間裡建立乙個新的執行緒,並返回已建執行緒的控制代碼。handle createthrea...