From 7a293df6db165d4cec2fa3c50c36d4de90ff62e3 Mon Sep 17 00:00:00 2001 From: Seiichi Yonezawa Date: Thu, 25 Jun 2015 08:21:38 +0900 Subject: [PATCH] Add documentation in Japanese about multi-threading. --- README.ja.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/README.ja.md b/README.ja.md index 3d472ca81e..b6c2af05f9 100644 --- a/README.ja.md +++ b/README.ja.md @@ -109,6 +109,7 @@ ThinがあればSinatraはこれを利用するので、`gem install thin`する * [リクエスト/インスタンスのスコープ](#リクエストインスタンスのスコープ) * [デリゲートスコープ](#デリゲートスコープ) * [コマンドライン](#コマンドライン) + * [マルチスレッド](#マルチスレッド) * [必要環境](#必要環境) * [最新開発版](#最新開発版) * [Bundlerを使う場合](#bundlerを使う場合) @@ -2575,6 +2576,37 @@ ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s HANDLER] -x # mutex lockを付ける (デフォルトはoff) ``` +### マルチスレッド + +_この[StackOverflow][so-answer]でのKonstantinによる回答を言い換えています。_ + +Sinatraでは同時実行モデルを負わせることはできませんが、根本的な部分であるThinやPuma、WebrickのようなRackハンドラ(サーバー)部分に委ねることができます。 +Sinatra自身はスレッドセーフであり、もしRackハンドラが同時実行モデルのスレッドを使用していても問題はありません。 +つまり、これはサーバーを起動させる時、特定のRackハンドラに対して正しい起動処理を特定することが出来ます。 +この例はThinサーバーをマルチスレッドで起動する方法のデモです。 + +```ruby +# app.rb + +require 'sinatra/base' + +class App < Sinatra::Base + get '/' do + "Hello, World" + end +end + +App.run! +``` + +サーバーを開始するコマンドです。 + +``` +thin --threaded start +``` + +[so-answer]: http://stackoverflow.com/questions/6278817/is-sinatra-multi-threaded/6282999#6282999) + ## 必要環境 次のRubyバージョンが公式にサポートされています。