2
我在我的程序中有線程,我想把字符放入流並在另一個線程中讀取,但在std :: cin.putback()之後我需要從鍵盤寫入某些東西來喚醒main函數中的std :: cin。我能做些什麼來自動閱讀嗎?std :: cin.putback()和「喚醒」它
我在我的程序中有線程,我想把字符放入流並在另一個線程中讀取,但在std :: cin.putback()之後我需要從鍵盤寫入某些東西來喚醒main函數中的std :: cin。我能做些什麼來自動閱讀嗎?std :: cin.putback()和「喚醒」它
這不是流如何工作。該std::cin
讀取來自你的程序的標準輸入外數據和putback
只允許保留一個字符,你實際上只是讀回緩衝區重新解析下次調用operator>>
(或get
或getline
或其他讀法)。
如果要在線程之間進行通信,則應使用某個線程庫中的消息隊列,例如, Boost提供了一個體面的便攜式之一。
這是不可能使用流,至少那些由標準庫提供的,因爲stringstream
不是線程安全的,fistream
/fostream
不能從原始文件句柄創建的,所以你不能將它們與POSIX相結合pipe
功能。將一個消息隊列封裝在一個流中是可能的(並且boost可以爲你提供足夠的工具),但是原始消息隊列API可能是合適的。