2009-07-03 7 views
37

Console.WriteLine이 여러 스레드에서 작동하는 이유는 무엇입니까?여러 스레드에서 Console.WriteLine 호출

+12

왜해야하지? – balpha

+17

@balpha - 질문은 * 작동하는 이유 *, * 작동하는 이유 *입니다. 작동하지 않는다고 말하는 것은 없습니다. 귀하의 의견은 사기롭고 모욕적입니다. –

+13

미안하지만, 이런 식으로 들리는 것은 아닙니다. 그것이 말하는 것은 : 당신이이 질문을하는 바로 그 사실은 당신이 그것이 성공한다는 것이 놀랍다 고 생각한다는 것을 암시합니다. 나는 정말로 멀티 스레딩과 그주의 사항에 관해서는 아무 것도 모르는 것을 알고 있기 때문에 왜 그 이유를 알고 싶어했을 것입니다. 사과하면 무례한 소리. – balpha

답변

50

콘솔 클래스는 스레드 동기화를 처리합니다. Console의 문서에서

: 나는 /이 스트림을 사용 O 작업이 여러 스레드에서 읽거나 스트림 , 쓸 수 있다는 뜻, 동기화

.

+0

예, 감사합니다. –

+0

+1 내 대답에 대한 설명을 주셔서 감사합니다. –

+0

@Reed는 잠금 또는 다른 동기화 메커니즘으로 동기화됩니까? – Kiril

2

Console.WriteLine을 사용할 때 여러 스레드가 동일한 출력에 쓰며, 일반적으로 화면이 기본적으로 사용됩니다.

+0

그래서 Console.WriteLine은 쓰레드 안전으로 코딩되어 있습니까? 다른 스레드가 쓰는 동안 한 스레드가 차단됩니까? –

+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

링크 주셔서 감사합니다! –

관련 문제