我知道如果我有多个线程调用putStrLn而没有任何类型的并发控制,那么线程的输出可能是交错的.
putStrLn
我的问题是putStrLn这个交错输出是否是线程安全的模数?
我假设这putStrLn是一个缓冲的写操作,所以我真的在问两个线程同时调用是否会导致输出缓冲区的任何损坏putStrLn.
一般来说,关于Haskell(真正的GHC)其他"标准I/O"功能的线程安全性可以说些什么呢?特别是,对于任何缓冲的读操作,是否可以将相同的字符返回到两个不同的线程同时进行相同的读取调用?
multithreading haskell thread-safety
haskell ×1
multithreading ×1
thread-safety ×1