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可能是合适的。