第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

mingw-w64線程:posix vs win32

mingw-w64線程:posix vs win32

海綿寶寶撒 2019-12-12 14:45:43
我正在Windows上安裝mingw-w64,有兩個(gè)選項(xiàng):win32線程和posix線程。我知道win32線程和pthread之間有什么區(qū)別,但是我不明白這兩個(gè)選項(xiàng)之間有什么區(qū)別。我懷疑如果我選擇posix線程會(huì)阻止我調(diào)用諸如CreateThread之類的WinAPI函數(shù)。似乎該選項(xiàng)指定了某個(gè)程序或庫(kù)將使用哪個(gè)線程API,但是該使用什么呢?是通過(guò)GCC,libstdc ++還是其他?我發(fā)現(xiàn)了這一點(diǎn): Windows的gcc端口中的thread_posixs和thread_win32有什么區(qū)別?簡(jiǎn)而言之,對(duì)于此版本的mingw,threads-posix版本將使用posix API并允許使用std :: thread,而threads-win32將使用win32 API,并禁用std :: thread部分。標(biāo)準(zhǔn)。好的,如果我選擇win32線程,則std :: thread將不可用,但仍將使用win32線程。但是用什么呢?
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

GCC附帶了一個(gè)編譯器運(yùn)行時(shí)庫(kù)(libgcc),用于(除其他外)它以其支持的語(yǔ)言為多線程相關(guān)功能提供了低級(jí)的OS抽象。最相關(guān)的示例是libstdc ++的C ++ 11 <thread>,<mutex><future>,當(dāng)使用內(nèi)部Win32線程模型構(gòu)建GCC時(shí),它們沒(méi)有完整的實(shí)現(xiàn)。MinGW-w64提供了一個(gè)winpthreads(在Win32多線程API之上的pthreads實(shí)現(xiàn)),GCC可以將其鏈接以啟用所有高級(jí)功能。

我必須強(qiáng)調(diào),這個(gè)選項(xiàng)并不禁止你寫(xiě)你想要的任何代碼(它絕對(duì)NO什么API,你可以在你的代碼中調(diào)用影響)。它僅反映GCC的運(yùn)行時(shí)庫(kù)(libgcc / libstdc ++ / ...)使用的功能。@James引用的警告與GCC的內(nèi)部線程模型無(wú)關(guān),而與Microsoft的CRT實(shí)現(xiàn)無(wú)關(guān)。

總結(jié)一下:

  • posix:?jiǎn)⒂肅 ++ 11 / C11多線程功能。使libgcc依賴libwinpthreads,以便即使您不直接調(diào)用pthreads API,也將分發(fā)winpthreads DLL。與您的應(yīng)用程序一起分發(fā)一個(gè)DLL沒(méi)有錯(cuò)。

  • win32:沒(méi)有C ++ 11多線程功能。

都不會(huì)影響任何調(diào)用Win32 API或pthreads API的用戶代碼。您可以同時(shí)使用兩者。


查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

GCC運(yùn)行時(shí)的某些部分(尤其是異常處理)取決于所使用的線程模型。因此,如果您使用的是由POSIX線程構(gòu)建的運(yùn)行時(shí)版本,但決定使用Win32 API在自己的代碼中創(chuàng)建線程,則可能會(huì)遇到問(wèn)題。


即使您使用運(yùn)行時(shí)的Win32線程版本,您也可能不應(yīng)該直接調(diào)用Win32 API。引用MinGW常見(jiàn)問(wèn)題解答:


由于MinGW使用Windows附帶的標(biāo)準(zhǔn)Microsoft C運(yùn)行時(shí)庫(kù),因此應(yīng)小心并使用正確的函數(shù)來(lái)生成新線程。特別是,該CreateThread函數(shù)將無(wú)法為C運(yùn)行時(shí)庫(kù)正確設(shè)置堆棧。您應(yīng)該改用_beginthreadex(幾乎)與完全兼容的CreateThread。


查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 3 回答
  • 0 關(guān)注
  • 6367 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)