2012-06-19 13 views
18

私はスレッドセーフなアプリケーションの開発についていくつかの研究を行っています。私は、同じアプリケーション(CPUが複数のスレッドで動作する場合)上で複数のスレッドを使用できることを知っていますが、何が起こるのかわかりません。IISは接続された各ユーザーにスレッドを提供しますか?

IISは何をしますか?すべてのユーザーが同じスレッドで作業していますか?あるいは、例えばそれぞれスレッドを与えられているのでしょうか?

私はIISについては初心者ですので、私に同行してください。私の質問は、コード内でパブリック静的メソッドをロックする必要があるかどうかを理解するのに役立ちます(スレッドの安全性が重要な場合)。

+0

http://msdn.microsoft.com/en-us/library/ms525101(v=VS.90).aspx –

答えて

9

ここからは、ASP.NET Thread Usage on IIS 7.5, IIS 7.0, and IIS 6.0とお読みください。あなたが覚えておくべき重要なことは - IISはユーザー用のスレッドを作成せず、同時呼び出しのスレッドを作成します。もちろん、純粋でない場合は、スレッドセーフな静的メソッドを作成する必要があります。

+1

セッション状態によって、同じユーザーからの同時呼び出しがシリアル化される可能性があります。 –

+0

は、[SignalR](http://signalr.net)のような永続的な接続フレームワークが、接続されたユーザーごとに1つのスレッドをブロックすることを意味しますか? –

+0

それは良いリンクです – PeteH

4

ユーザはセッションを持つことになりますが(厳密に言えば、必ずしもそうではないかもしれませんが、スレッドに専念する必要はありません)。あなたがそれについて考えるならば、それはやり方が非常に非効率的なことになるでしょう。

iisの仕組みを理解したい場合は、スレッドではなくセッションについて読むことをお勧めします。

+0

私はこれを言うことができます。すべてのユーザーにセッションが与えられ、必要に応じて各セッションがスレッド(または複数のスレッド)を使用している可能性があります。これは正しいです? –

+3

それは正しいが、本当は全体の画像ではない。私が最初に返信してみようとしているのは、どのユーザにとってもリクエストを行い、ウェブサイトがレスポンスを生成するということです。明らかに、この要求を処理するにはスレッドが必要です。しかし、一度応答が完了すると、スレッドはどうなりますか?それは、ユーザーが別の要求をすることを意識しているだけではありません。 IISによって他のユーザーからの要求に対応するために再利用されます。物事の「セッション」側は、iisが返すユーザーを認識する方法です(スレッドをぶら下げないでください) – PeteH

+0

これは、コード内でマルチスレッドを実装していないと、2セッション –

関連する問題