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

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

cout同步/線(xiàn)程安全嗎?

cout同步/線(xiàn)程安全嗎?

C++
手掌心 2019-06-26 17:11:41
cout同步/線(xiàn)程安全嗎?一般來(lái)說(shuō),我假設(shè)流不是同步的,應(yīng)該由用戶(hù)來(lái)執(zhí)行適當(dāng)?shù)逆i定。然而,做這樣的事情cout在標(biāo)準(zhǔn)圖書(shū)館得到特殊待遇?也就是說(shuō),如果多個(gè)線(xiàn)程正在寫(xiě)入cout他們能把cout反對(duì)?我知道,即使同步,您仍然會(huì)得到隨機(jī)交錯(cuò)的輸出,但這種交織是有保證的。也就是說(shuō),使用起來(lái)安全嗎?cout從多個(gè)線(xiàn)程?這個(gè)供應(yīng)商依賴(lài)嗎?GCC是做什么的?重要:如果你說(shuō)“是”,請(qǐng)?zhí)峁┮恍﹨⒖?,因?yàn)槲倚枰恍┳C據(jù)。我還擔(dān)心的不是底層的系統(tǒng)調(diào)用,它們很好,但是流在頂部添加了一層緩沖。
查看完整描述

3 回答

?
茅侃侃

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

這是個(gè)很好的問(wèn)題。

首先,C+98/C+03沒(méi)有“線(xiàn)程”的概念。所以在這個(gè)世界上,這個(gè)問(wèn)題是毫無(wú)意義的。

那C+0x呢?看見(jiàn)Martinho的回答(我承認(rèn)這讓我很驚訝)。

具體的實(shí)現(xiàn)前C+0x怎么樣?例如,下面是basic_streambuf<...>:sputcGCC 4.5.2(“流線(xiàn)型”頭球):

 int_type
 sputc(char_type __c)
 {
   int_type __ret;
   if (__builtin_expect(this->pptr() < this->epptr(), true)) {
       *this->pptr() = __c;
        this->pbump(1);
        __ret = traits_type::to_int_type(__c);
      }
    else
        __ret = this->overflow(traits_type::to_int_type(__c));
    return __ret;
 }

顯然,這不執(zhí)行鎖定。也沒(méi)有xsputn..這絕對(duì)是cout使用的流的類(lèi)型。

據(jù)我所知,libstdc+不對(duì)任何流操作執(zhí)行鎖定。我不希望有,因?yàn)槟菚?huì)很慢。

因此,使用此實(shí)現(xiàn),兩個(gè)線(xiàn)程的輸出顯然有可能相互損壞(只是交錯(cuò))。

這個(gè)代碼會(huì)破壞數(shù)據(jù)結(jié)構(gòu)本身嗎?答案取決于這些函數(shù)的可能交互;例如,如果一個(gè)線(xiàn)程試圖刷新緩沖區(qū),而另一個(gè)線(xiàn)程試圖調(diào)用xsputn或者別的什么。這可能取決于編譯器和CPU如何決定重新排序內(nèi)存負(fù)載和存儲(chǔ);需要仔細(xì)分析才能確定。如果兩個(gè)線(xiàn)程試圖并發(fā)地修改同一個(gè)位置,則還取決于CPU所做的工作。

換句話(huà)說(shuō),即使它在當(dāng)前環(huán)境中正常工作,當(dāng)您更新任何運(yùn)行時(shí)、編譯器或CPU時(shí),它也可能中斷。

執(zhí)行摘要:“我不會(huì)”。構(gòu)建一個(gè)日志類(lèi)來(lái)執(zhí)行正確的鎖定,或者移動(dòng)到C+0x。

作為一個(gè)弱的替代方案,您可以將cout設(shè)置為未緩沖??赡軙?huì)跳過(guò)與緩沖區(qū)和調(diào)用相關(guān)的所有邏輯(盡管沒(méi)有保證)。write直接。盡管這可能會(huì)令人望而卻步。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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