2

同じクラスのインスタンスがいくつかあります。クラスの有効期間中、このクラスのすべてのメソッド呼び出しは同じスレッドで実行する必要があります。しかし、インスタンスごとに異なるスレッドが必要です。私は Threadpool について考えましたが、私はそれについてあまり制御できていないようです。

ThredPool を使用せずにスレッドを再利用するにはどうすればよいですか?

ありがとうございました!マーティン

編集 (これが必要な理由): サードパーティ製品のビジネス ロジックにアクセスするには、win32 dll を使用する必要があります。この dll は、Web アプリケーションのようなマルチスレッド環境向けには設計されていません。ASP クラシック モード (STA スレッド) で ASP.NET MVC アプリケーションを実行すると、これまでのところすべて正常に動作します。しかし問題は、すべてのユーザーがお互いをブロックしようとしているということです。このコンポーネントは、いくつかの状態も維持します。別のスレッドがこのコンポーネントにアクセスするとすぐに、メソッド呼び出しごとに渡さなければならない接続ハンドルが認識されなくなります。ログオン手順の後、接続ハンドルを取得しました。Web アプリケーションを MTA モードに戻し、ワーカー コンセプトを使用して、約 10 人のユーザーをワーカーに割り当てたいと考えています (最大 10 人のユーザーが相互にブロックする必要があります)。コンポーネントが問題にならないように、1 つのワーカーは常に同じスレッドを使用して API 呼び出しを実行する必要があります。私'

更新 - 解決策が見つかりました: Ami Bar の「Smart Thread Pool」のおかげで、探していた動作を (簡単に) 実現できました。ワーカーごとに、1 つのスレッドの最大数と最小数を持つ独自のスレッド プール インスタンスができました。これはスレッド プールのアイデアではありませんが、作業項目の処理が非常に簡単になり、他にも優れた機能がいくつかあります。現在、Web アプリケーションは MTA で実行されています。数時間にわたって安定しているかどうかを確認するために、いくつかの負荷テストを準備します。ここを参照してください: http://www.codeproject.com/Articles/7933/Smart-Thread-Pool

4

0 に答える 0