나는 멀티 스레딩에 대해 배우려고하고 있으며 간단한 질문이 있습니다. 대부분의 예제에서 표준 출력 버퍼는 여러 스레드가이를 사용하기 전에 꺼집니다.멀티 스레딩 할 때 표준 출력 버퍼를 끄는 이유는 무엇입니까?
setbuf (stdout, NULL);
왜? 내가 그 라인을 지우면 코드가 똑같이 인쇄됩니다!
나는 멀티 스레딩에 대해 배우려고하고 있으며 간단한 질문이 있습니다. 대부분의 예제에서 표준 출력 버퍼는 여러 스레드가이를 사용하기 전에 꺼집니다.멀티 스레딩 할 때 표준 출력 버퍼를 끄는 이유는 무엇입니까?
setbuf (stdout, NULL);
왜? 내가 그 라인을 지우면 코드가 똑같이 인쇄됩니다!
출력이 버퍼되지 않을 때 즉시 출력되지 않아서 스레드간에 출력되는 순서가 바뀔 수 있습니다.
버퍼링을 해제하면 명령문이 실행 된 순서를 알 수 있습니다.
버퍼링을 방지합니다. 이는 다양한 스레드가 무엇을했는지 더 잘 이해할 수 있음을 의미합니다. 즉, 어떤 데이터 량이 stdout
에 기록 된 후에가 아니라 stdout
에 대한 쓰기가 발생할 가능성이 큽니다.
콘솔 앱의 출력을 UI로 파이프 할 때도 유용합니다.