_beginthreadex 創(chuàng)建線程

1 語法

uintptr_t _beginthreadex( // NATIVE CODE
   void *security,
   unsigned stack_size,
   unsigned ( __stdcall *start_address )( void * ),
   void *arglist,
   unsigned initflag,
   unsigned *thrdaddr
);

2 參數(shù)

  • security:指向security attributes結(jié)構(gòu)的指針贪庙,此結(jié)構(gòu)確定返回的句柄是否由子進(jìn)程繼承。如果security為NULL拷淘,則不能繼承句柄层皱。
  • stack_size:新線程的堆棧大小或0伴箩。
  • start_address:啟動開始執(zhí)行新線程的例程的地址。對于_beginthread绝葡,調(diào)用約定是__cdecl(針對本機(jī)代碼)或__clrcall(針對托管代碼)深碱;對于_beginthreadex,它是__stdcall(針對本機(jī)代碼)或__clrcall(針對托管代碼)藏畅。
  • arglist:要傳遞到新線程的參數(shù)或列表或NULL敷硅。
  • initflag:控制新線程的初始狀態(tài)的標(biāo)志。將 initflag設(shè)置為 0以立即運(yùn)行,或設(shè)置為 CREATE_SUSPENDED以在掛起狀態(tài)下創(chuàng)建線程绞蹦;使用 ResumeThread 來執(zhí)行此線程力奋。將 initflag設(shè)置為 STACK_SIZE_PARAM_IS_A_RESERVATION標(biāo)志以將 stack_size用作堆棧的初始保留大小(以字節(jié)計)幽七;如果未指定此標(biāo)志景殷,stack_size將指定提交大小。
  • thrdaddr:指向接收線程標(biāo)識符的32位變量锉走。如果此變量為NULL滨彻,則不可用。

3 返回值

如果成功挪蹭,則這些函數(shù)中的每一個都會返回一個句柄到新創(chuàng)建的線程亭饵;但是,如果新創(chuàng)建的線程退出過快梁厉,則_beginthread 可能不會返回有效句柄辜羊。

4 使用實例

unsigned int nThreadID = 0;
m_hGetOneFrameHandle[i] = (void*) _beginthreadex( NULL , 0 , WorkThread , this, 0 , &nThreadID );
if (NULL == m_hGetOneFrameHandle[i])
{
    ShowErrorMsg(TEXT("Create thread fail"), 0);
}
// ch:工作線程 | en:Working thread
unsigned int    __stdcall   WorkThread(void* pUser)
{
    if (NULL == pUser)
    {
        return -1;
    }

    CMultipleCameraDlg* pCam = (CMultipleCameraDlg*)pUser;
    if (NULL == pCam)
    {
        return -1;
    }
    int nUsingCameraNum = pCam->m_nUsingCameraNum;
    pCam->m_nUsingCameraNum = -1;       
    pCam->ThreadFun(nUsingCameraNum);

    return 0;
}

注意:

  • 在 Win32 API 中,創(chuàng)建線程的基本函數(shù)是 CreateThread词顾,而 _beginthread(ex) 是 C++ 運(yùn)行庫的函數(shù)八秃。為什么要有兩個呢?因為C++ 運(yùn)行庫里面有一些函數(shù)使用了全局量肉盹,如果使用 CreateThread 的情況下使用這些C++ 運(yùn)行庫的函數(shù)昔驱,就會出現(xiàn)不安全的問題。而 _beginthreadex 為這些全局變量做了處理上忍,使得每個線程都有一份獨(dú)立的“全局”量骤肛。
  • 所以,如果你的編程只調(diào)用 Win32 API/SDK 窍蓝,就放心用 CreateThread腋颠;如果要用到
    C++ 運(yùn)行時間庫,那么就要使用 _beginthreadex 吓笙,并且需要在編譯環(huán)境中選擇 Use
    MultiThread Lib/DLL淑玫。
  • 線程handle因為是內(nèi)核對象,所以需要在最后closehandle面睛。

QT多線程

  • QThread最終還是調(diào)用_beginthreadex或者CreateThread絮蒿。

參考:
1、https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/beginthread-beginthreadex?view=msvc-160
2侮穿、https://www.cnblogs.com/MCSFX/p/13180726.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歌径,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亲茅,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件克锣,死亡現(xiàn)場離奇詭異茵肃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袭祟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門验残,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巾乳,你說我怎么就攤上這事您没。” “怎么了胆绊?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵氨鹏,是天一觀的道長。 經(jīng)常有香客問我压状,道長仆抵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任种冬,我火速辦了婚禮镣丑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘娱两。我一直安慰自己莺匠,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布十兢。 她就那樣靜靜地躺著趣竣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪纪挎。 梳的紋絲不亂的頭發(fā)上期贫,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音异袄,去河邊找鬼通砍。 笑死,一個胖子當(dāng)著我的面吹牛烤蜕,可吹牛的內(nèi)容都是我干的封孙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼讽营,長吁一口氣:“原來是場噩夢啊……” “哼虎忌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起橱鹏,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤膜蠢,失蹤者是張志新(化名)和其女友劉穎堪藐,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挑围,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁竞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了杉辙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片模捂。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蜘矢,靈堂內(nèi)的尸體忽然破棺而出狂男,到底是詐尸還是另有隱情,我是刑警寧澤品腹,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布岖食,位于F島的核電站,受9級特大地震影響珍昨,放射性物質(zhì)發(fā)生泄漏县耽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一镣典、第九天 我趴在偏房一處隱蔽的房頂上張望兔毙。 院中可真熱鬧,春花似錦兄春、人聲如沸澎剥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哑姚。三九已至,卻和暖如春芜茵,著一層夾襖步出監(jiān)牢的瞬間叙量,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工九串, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留绞佩,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓猪钮,卻偏偏與公主長得像品山,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烤低,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容