2009-07-03 11 views
37

なぜConsole.WriteLineは複数のスレッドから機能しますか?複数のスレッドからConsole.WriteLineを呼び出す

+12

なぜいけませんか? – balpha

+17

@balpha - 質問は*なぜ動作するのですか、*何が原因なのか*。それは動作しないと言う何もありません。あなたのコメントは卑劣で不快です。 –

+13

申し訳ありませんが、このように聞こえることは意図されていませんでした。それが言うことは:あなたがこの質問をするという事実は、あなたがそれがうまくいくのは驚きだと思うということを示唆しています。私は本当になぜそれを知りたかったでしょう。なぜなら、私はマルチスレッドとその注意点については何もあまり知らないことが分かっているからです。もしそれが失礼なのであれば、謝罪してください。 – balpha

答えて

50

コンソールクラスはスレッド同期を処理します。 Consoleのドキュメントから

:私は/これらのストリームを使用して、入出力操作が は、複数のスレッドからの読み取り、またはストリーム に書き込むことができることを意味する、同期され

+0

はい、ありがとう、リード。 –

+0

+1私の答えを明確にしてくれてありがとう。 –

+0

@Reedは、ロックや他の同期メカニズムと同期していますか? – Kiril

2

Console.WriteLineを使用すると、複数のスレッドが同じ出力に書き込みます。通常はデフォルトで画面に表示されます。

+0

したがって、Console.WriteLineはスレッドセーフとしてコード化されていますか? 1つのスレッドがブロックしている間にブロックされますか? –

+0

です - MSDNの詳細については私の答えを見てください。 –

6

あなたがConsole.ReadKeyを使用する場合、複数のスレッドからConsole.WriteLineをないが作業を行い、.NET 4.5 CLRのバグがあります。いくつかのWindowsのバージョンでは修正されていますが、8.1ではWindows Updateがまだそれを見つけられません。

Infrequent hangs in a multi-threaded C# console application when using Console.Writeline() or Console.Write()

Using Console.WriteLine in a Timer why it would appear to exit?

+0

リンクありがとうございます! –

関連する問題