2009-07-24 12 views
0

私は多くのスレッドを持つアプリケーションを実行しています。 これらのスレッドはすべてGPS座標でデータベースを更新しています。 一方、アプリケーションは同期要求を受け取ることができます。 サーバーがこの要求を処理する前に、すべての書き込みスレッドがジョブを終了する必要があります。 したがって、私はこれを管理するために待機ハンドルの配列を使用しています。だからここ待機ハンドルのスレッド優先度を上げる

はシナリオです:

俳優:

1 Synchro Thread 
N Writing Thread 

Nライティングスレッドがに取り組んでいます。 1つのシンクロスレッドがに到着し、が処理を停止します。 ロックを要求しています。そうすると、それはのリストの末尾に "claiming lock threads"のが置かれます。

問題:このリストは非常に長いか、またはシンクロスレッドがの最優先です。

私はそれを与えるためにどうすれば実現できますかVIPパス

答えて

2

代わりに、System.Threading.ReaderWriterLockSlimを使用する必要があります。ライターはロックの「読み取り」モードで動作することができ、排他アクセスを必要とするシンクロスレッドは「書き込み」モードに入ることができる。

+0

これは私のアーキテクチャでは動作しません。作家はシンクロが起こる前に本当に仕事を終わらせなければなりません。 ロックを取得するために古いスレッドより古いスレッドが優先されるかどうかを知りたいだけです。 – Roubachof

+0

Writer(Synchro)はReaderWriterLockSlimを優先し、 'Write'モードでアクセスを許可する前に 'Readers'(DataWriters)が完了します。複数の同時読み込みモード(DataWriter)を使用できますが、1つのスレッドのみが「書き込み」(シンクロ)モードに限定されています。 – MaLio

0

優先ロックシステムを実装する必要があります。例がありますhere