am積読消化シリーズの派生です。Rubyで学ぶUnixの基礎processをforkして動くWebサーバーをThreadで試してみます。Threadの簡単な使い方まずはThreadの簡単な使い方です。一部違いはあるものの、書き方はProcessのfork処理と大きく差はありませんね。#{Thread.current}"Thread.start{...}とすると、新しいThreadを生成してブロックを実行します。メインスレッドが終了すると、Threadも終了します。Thread#joinを実行すると、対象のThreadの処理が終了するまで待ちます。ちなみに、Threadはメインスレッドと同じProcessで実行されます。そのため、psでrubyのプロセスを確認すると一つしかありません。処理プロセスが同じということは、Thread内の処理で変数は共有されることになりますね。Threadローカルにするためには、Thread.startの引数に渡します。1複数Threadを待ちたいThread#joinは特定のThreadを待ちます。Webサーバーの例では複数のProcessを管理していました。同様のことをThreadで実行するには、ThreadsWaitを使います。1複数Threadでリクエストを処理するWebサーバーそれでは上記を踏まえて、複数Threadで処理するWebサーバーを書いてみます。メインスレッドを待ちにするThreadsWait.all_waits(worker_threads)実際のところ、socketを複数Threadで共有した場合どうなるか、とかは調査する必要がありますね。Threadで置き換えることもできたということで。これでも一応動きます。Whitespace。