1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00

Merge pull request #1014 from sinatrasapporo/ja-multi-threaded

Add documentation in Japanese about multi-threading.
This commit is contained in:
Katrina Owen 2015-08-15 10:38:48 -06:00
commit 973c177930

View file

@ -109,6 +109,7 @@ ThinがあればSinatraはこれを利用するので、`gem install thin`する
* [リクエスト/インスタンスのスコープ](#リクエストインスタンスのスコープ) * [リクエスト/インスタンスのスコープ](#リクエストインスタンスのスコープ)
* [デリゲートスコープ](#デリゲートスコープ) * [デリゲートスコープ](#デリゲートスコープ)
* [コマンドライン](#コマンドライン) * [コマンドライン](#コマンドライン)
* [マルチスレッド](#マルチスレッド)
* [必要環境](#必要環境) * [必要環境](#必要環境)
* [最新開発版](#最新開発版) * [最新開発版](#最新開発版)
* [Bundlerを使う場合](#bundlerを使う場合) * [Bundlerを使う場合](#bundlerを使う場合)
@ -2575,6 +2576,37 @@ ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s HANDLER]
-x # mutex lockを付ける (デフォルトはoff) -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バージョンが公式にサポートされています。 次のRubyバージョンが公式にサポートされています。