From: Suraj Kurapati Date: 2010-06-06T14:29:15+09:00 Subject: threads & mutex question (Rubyist book example) Hi, I am concerned about the lack of mutual exlusion in code listing 14.2 "Chat server using TCPServer and threads" on page 430 in "The Well-Grounded Rubyist" book. That code goes something like this: chatters = [] while ... Thread.new(...) do |c| chatters.each { ... } chatters.push c chatters.each { ... } chatters.delete c chatters.each { ... } end end Multiple threads are spawned and each of them accesses the shared resource (the chatters array) directly without mutual exclusion. What happens when a thread inside chatters.each() gets descheduled and another thread proceeds to add or delete an object to chatters? Shouldn't there be a Mutex#synchronize call wrapping all access to the chatters array? Thanks for your consideration. -- Posted via http://www.ruby-forum.com/.