[Ruby] STDOUT.sync = true는 무엇을 의미합니까?


Answers

일반적으로 puts 는 즉시 STDOUT 쓰지 않지만 문자열을 내부적으로 버퍼링하고 더 큰 청크로 출력을 씁니다. 이것은 IO 작업이 느리고 일반적으로 모든 단일 문자를 즉시 ​​콘솔에 쓰는 것을 피하는 것이 더 합리적이기 때문에 수행됩니다.

이 문제로 인해 특정 상황에서 문제가 발생합니다. 진행 막대를 만들고 싶다고 상상해보십시오 (광범위한 계산 사이에 단일 점을 출력하는 루프를 실행하십시오). 버퍼링을하면 결과가 잠시 동안 출력되지 않고 갑자기 여러 도트가 한 번에 출력됩니다.

이 동작을 피하고 대신 STDOUT 즉시 쓰면 STDOUT 다음과 같이 동기화 모드로 설정할 수 있습니다.

STDOUT.sync = true

문서에서 :

동기화 모드가 true이면 모든 출력이 기본 운영 체제로 즉시 플러시되고 내부적으로 버퍼링되지 않습니다.

Question

나는 god 소스 코드를 읽고 Ruby의 프로세스 모니터링 프레임 워크 STDOUT.sync = true 발견했다. 전에 이런 걸 본적이 없어요. 그것이 무엇인지,이 라인의 요점은 무엇입니까?

미리 감사드립니다.