おがたといいます。

最近、雑誌記事に興味を感じてネットワークプログラミングを試みています。
そこで、初めて Thread を使ってみたのですが、美しい組み方が出来ないのです。

具体的には複数の Thread で同一の処理を平行して行うものなのですが、
理想的には

----------> Main Thread                       ------------------>
 |-----|                                         |------------|
 |-----|                  といきたいところを       |--------|

のような書き方でしか表せません。下記のコードのようなものなのですが...
何かうまい書き方はないでしょうか。

	def seek
		main_th = Thread.current
		Thread.start{
			begin
				request_thread(@thread_count).join
			ensure
				main_th.wakeup
			end
		}
		@request_queue.push(:REQUEST_QUEUE_LASTCODE)
		Thread.stop
		@request_queue.clear
	end

	def request_thread(thread_count)
		th = Thread.start{
			while true
				begin
					request = @request_queue.pop
					break if request == :REQUEST_QUEUE_LASTCODE
					unless respond_to?(:quest) || quest(request)
						@next.request_push(request) if @next
					end
				rescue Exception
					print $!
				end
			end
			@request_queue.push(:REQUEST_QUEUE_LASTCODE)
		}
		if thread_count > 1
			request_thread(thread_count-1).join
		end
		return th
	end