Dot-Net
Console.WriteLine 是否阻塞?
Console.WriteLine在輸出被寫入之前阻塞還是立即返回?如果確實阻塞,是否有將非同步輸出寫入控制台的方法?
Console.WriteLine 會阻塞直到輸出被寫入還是立即返回?
是的。
如果確實阻塞,是否有將非同步輸出寫入控制台的方法?
如果您使用的是 .NET 4.0,那麼在不阻塞的情況下寫入控制台的解決方案非常簡單。這個想法是將文本值排隊並讓一個專用執行緒進行
Console.WriteLine呼叫。Console生產者-消費者模式在這裡是理想的,因為它保留了使用本機類時隱含的時間順序。.NET 4.0 使這變得簡單的原因是它具有BlockingCollection類,該類有助於生產者-消費者模式的產生。如果您不使用 .NET 4.0,那麼您可以通過下載Reactive Extensions框架來獲得反向移植。public static class NonBlockingConsole { private static BlockingCollection<string> m_Queue = new BlockingCollection<string>(); static NonBlockingConsole() { var thread = new Thread( () => { while (true) Console.WriteLine(m_Queue.Take()); }); thread.IsBackground = true; thread.Start(); } public static void WriteLine(string value) { m_Queue.Add(value); } }