[問題] -解決- cout影響socket的send()??

作者: hn12404988 (Willy)   2016-10-12 17:12:51
開發平台(Platform): CentOS 7
編譯器: GCC std=c++11
額外使用到的函數庫(Library Used):
sys/socket.h
poll.h
問題(Question):
很奇怪的狀況,一段程式碼中,會先send(),成功後會poll()來等
poll成功的話就recv()
很基本的使用,但只要我在send之前簡單加上一行:
std::cout << "a" << std::endl;
(printf也一樣)
就有可能「機率性」的,server就收不到send,也可說就是send不出去
但如果是在send之後,不管加上幾行cout,都是正常
在想是不是底層的i/o有bug? 另外這是multi-thread的程式
這段程式是運行在子thread,但也看不出來cout跟multi-thread有甚麼關係?
請問有人遇過這種狀況嗎?
或認為可能的問題是出在哪嗎?
作者: firejox (Tangent)   2016-10-12 17:25:00
機率性..應該是同步的問題
作者: Schottky (順風相送)   2016-10-12 17:42:00
咦,跑 daemon 沒有讓它自行 detach 嗎?有時候這類問題真的超難抓...
作者: hn12404988 (Willy)   2016-10-12 17:49:00
哈,說來蠢,子thread設計執行完就回收,我剛在測試如果使用者忘記回收,會發生甚麼事,但一時間沉迷於cout怎麼會send這個狀況

Links booklink

Contact Us: admin [ a t ] ucptt.com