Skip to content

Commit

Permalink
Merge pull request #1014 from sinatrasapporo/ja-multi-threaded
Browse files Browse the repository at this point in the history
Add documentation in Japanese about multi-threading.
  • Loading branch information
kytrinyx committed Aug 15, 2015
2 parents f9446df + 7a293df commit 973c177
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions README.ja.md
Expand Up @@ -109,6 +109,7 @@ ThinがあればSinatraはこれを利用するので、`gem install thin`する
* [リクエスト/インスタンスのスコープ](#リクエストインスタンスのスコープ)
* [デリゲートスコープ](#デリゲートスコープ)
* [コマンドライン](#コマンドライン)
* [マルチスレッド](#マルチスレッド)
* [必要環境](#必要環境)
* [最新開発版](#最新開発版)
* [Bundlerを使う場合](#bundlerを使う場合)
Expand Down Expand Up @@ -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バージョンが公式にサポートされています。
Expand Down

0 comments on commit 973c177

Please sign in to comment.