【发布时间】:2015-03-31 21:15:06
【问题描述】:
假设您有一个包含一堆线程的程序。一个线程想要冻结对 stdin、stdout 和 stderr 的访问(导致任何其他线程或键盘阻塞直到完成),这样它的输出就不会与它们交织在一起。有没有办法直接做到这一点,或者必须有一个管理器线程,你知道,管理句柄。与此相关的是,您是否可以让 stdin 上的任何输入阻塞 stdout 上的任何输出,直到它(原子地)接收和处理?
【问题讨论】:
-
我模糊地记得有人声称
stdout已经 阻止了单行中的文本交错。虽然我找不到权威的参考... -
@MathematicalOrchid 如果您在我的任何一个示例中将
putStLn更改为putStr,您将在一行中看到交错的文本。 -
那显然我错了……
标签: multithreading haskell stdin handle atomic