何と使い方?C#でFIFO順序を保証する同期クラスはありますか?
毎秒DBに挿入するタイマーがあり、タイマーハンドラとメインスレッドの間に共有リソースがあります。 私は、タイマーハンドラが挿入に1秒以上かかる場合、待機スレッドは順番に実行されるべきであることを保証したいと思います。 これは私のタイマハンドラ
private void InsertBasicVaraibles(object param)
{
try
{
DataTablesMutex.WaitOne();//mutex for my shared resources
//insert into DB
}
catch (Exception ex)
{
//Handle
}
finally
{
DataTablesMutex.ReleaseMutex();
}
}
のサンプルコードである。しかし、現在、ミューテックスは、任意の順序を保証するものではありません。 詳細な質問をした後、答えがありません!!!
:
は再入の問題については、私はこれにコードを変更しました。 1つのスレッドが入り、それが出るまで誰も入らない! –
@Mitch:しかし、待たなければならなかった最初のスレッドが直後にブロック解除されるという保証はありません。そうではありません。ロックはFIFOではありません。 –
(つまり、現在T1がロックを保持している場合、T2はそれを取得しようとします。その後T3はそれを取得しようとしますが、T3がT2を取得する前に取得する保証はありません)。 –