알다시피, 루비 1.9는 OS 스레드를 사용하지만 실제로는 하나의 스레드 만 동시에 실행됩니다 (다른 스레드가 처리하는 동안 하나의 스레드가 IO를 차단할 수 있음). 필자가 보았던 스레딩 예제는 Thread.new
을 사용하여 새 스레드를 시작합니다. Java 배경에서 볼 때 일반적으로 스레드 풀은 "헤비급"이기 때문에 많은 새 스레드로 시작하지 않습니다.루비 1.9 스레드 풀
루비에 스레드 풀 구성 요소가 내장되어 있습니까? 나는 기본 언어 라이브러리에서 하나도 보지 못했습니다. 아니면 일반적으로 사용되는 표준 보석이 있습니까? OS 레벨 스레딩은 루비의 새로운 기능이기 때문에 라이브러리가 얼마나 성숙한 지 모르겠습니다.
감사합니다. 저는 실제로 유스 케이스를 갖고 있지 않지만, 제가 곡괭이 책을 읽었을 때, 이것은 제가 확신 할 수없는 것이었지만 당신은 분명히했습니다. –
Ruby에서는 스레드가 동시에 실행되지 않기 때문에 쓸모가 없다는 사람들이 있다는 것을 나는 이해하지 못한다. 그들은 실제로 CPU 바운드 작업에는 쓸모가 없지만 병렬로 수행하려는 모든 IO를 차단하는 데 매우 유용 할 수 있습니다. 예 : 동시 HTTP 요청 – Kamchatka
코멘트 주셔서 감사합니다. Ruby에서는 쓰레드가 쓸모가 없다는 것을 명확히 할 필요가 있습니다. 쓰레드가 오버 헤드가 없기 때문에 사람들은 GIL의 한계를 인식 할 필요가 있습니다. 비 차단 IO의 경우 이벤트 C 기반 비동기 호출이 더 적합 할 수 있습니다. 자세한 내용은 http://blog.gregweber.info/posts/2011-06-16-high-performance-rb-part3을 참조하십시오. – Wulfram