2012-05-05 4 views
2

Ruby에서 멀티 스레딩 프로그램을 작업하고 있습니다. 간단한 질문을하고 싶습니다.Ruby에서 다중 스레드 프로그래밍

예를 들어 School 클래스가 있으며 다른 두 클래스는 BoyGirl입니다.

School에는 모든 소년과 소녀의 출석을 추적하는 해시가 있습니다. 그리고 나는 각각의 소년/소녀에게 School의 스레드를 만듭니다. 그래서 그들은 개별적으로 활동을 할 수 있습니다.

나는 모든 남자와 여자 스레드가 출석 해시를보고 변경할 수 있기를 바랍니다. (여자가 학교에 오면 해시에서 이름을 확인하고 해시에서 이름을 삭제하십시오)

모니터를 사용하여 스레드 잠금을 사용할 수 있지만 스크립팅 언어에 익숙하지 않습니다. 그래서 모든 스레드가 어떻게 해시 변수를보고 수정하는지 잘 모르겠습니다. (종류 C/자바에서 정적 같은)

답변

3

뭔가 같이 주셔서 감사합니다 :

threads = [] 
hash = {g:0,n:0} 
m = Mutex.new 

threads << Thread.new(optional_pass_by_value) do |value| 
    #do whatever 
    #modify hash 
    m.synchronize {hash[:g] += 1} #By using synchronize you get an atomic behavior 
    #Only one thread will be able to access and modify this hash at one time. 
end 

threads.each {|t| t.join} 
관련 문제