我知道,如果我有多个线程putStrLn
在没有任何并发控制的情况下调用,那么线程的输出可能是交错的。
我的问题是这个交错输出是否putStrLn
是线程安全的模数?
我假设这putStrLn
是一个缓冲的写操作,所以我真的在问是否可以通过同时调用两个线程来发生输出缓冲区的任何损坏putStrLn
。
总的来说,关于 Haskell(实际上是 GHC)的其他“标准 I/O”函数的线程安全可以说什么?特别是,对于任何缓冲的读取操作,同一个字符是否有可能返回到同时进行相同读取调用的两个不同线程?