2017-01-30 9 views

답변

1

예 여러 코어에서 코드/블록을 실행할 수는 있지만 간단하지는 않습니다. 백킹 구조가 준비되어 있어야합니다 (Array, Hash과 같은 핵심 구조는 스레드로부터 안전하지 않습니다).

단일 스레드 케이스에서와 다른 (예기치 않은) 결과없이 간단히 (1..100).each { |i| puts i } 멀티 스레드를 실행할 수는 없습니다.

스레드 또는 스레드가 스레드간에 공유되도록하려면 액세스를 동기화하거나 스레드 안전 구조를 사용해야합니다.

아마도 귀하의 경우 녹색 필드에서 시작하지 않을 것입니다. 이러한 개념과 동시 프로그래밍을위한 백라이트 중 일부는 concurrent-ruby 보석을 사용하여 사용할 수 있습니다. 당신이 스레드 사이에 "안전한"-ly 공유 변수 (CR 루비 공식 하나 부족으로 메모리 모델을 소개하려고에 관심이 있다면 배울 병렬 블록을 실행하기위한

executors/thread-pools

thread-safe structures있다 - JRuby를 클래스 변수가 휘발성이 있음 - 스레드간에 가시적으로 변경됨)