Perché Console.WriteLine funziona con più thread?Chiamare Console.WriteLine da più thread
risposta
La classe della console gestisce la sincronizzazione dei thread per conto dell'utente.
Dalla documentazione di Console:
operazioni di I/O che utilizzano questi flussi sono sincronizzati, il che significa multipli thread possono leggere o scrivere, i flussi.
Sì, grazie Reed. –
+1 Grazie per il chiarimento sulla mia risposta, ben inserito. –
@Reed è sincronizzato bloccando o con qualche altro meccanismo di sincronizzazione? – Kiril
Più thread scrivono sulla stessa uscita quando si utilizza Console.WriteLine
, in genere lo schermo per impostazione predefinita.
Quindi Console.WriteLine è codificato come thread safe, quindi? Un thread si blocca mentre l'altro scrive? –
È - vedere la mia risposta per i dettagli da MSDN. –
c'è un bug in .NET 4.5 CLR che rende Console.WriteLine non lavoro da più thread se si utilizza Console.ReadKey. È stato risolto in alcune versioni di Windows, ma in Windows Update non lo trova ancora.
Using Console.WriteLine in a Timer why it would appear to exit?
Grazie per i collegamenti! –
Perché non dovrebbe? – balpha
@balpha - La domanda è * perché funziona *, * qual è la ragione per cui funziona *. Non c'è nulla che dice che non funzioni. Il tuo commento è subdolo e offensivo. –
Mi dispiace, non intendeva suonare in questo modo. Quello che dice è: il fatto stesso che tu fai questa domanda suggerisce che pensi che sia una sorpresa che funzioni. Avrei davvero voluto sapere perché, perché non conosco abbastanza niente del multi-threading e dei suoi avvertimenti. Scuse se sembrava maleducato. – balpha