Was ist es und wie zu verwenden?Gibt es eine Synchronisationsklasse, die die FIFO-Reihenfolge in C# garantiert?
Ich brauche das, da ich einen Timer habe, der jede Sekunde in DB einfügt, und ich habe eine gemeinsame Ressource zwischen Timer-Handler und dem Haupt-Thread. Ich möchte garantieren, dass, wenn der Timer-Handler mehr als eine Sekunde in der Einfügung dauert, die wartenden Threads in der Reihenfolge ausgeführt werden sollten. Dies ist ein Beispielcode für meinen Timer-Handler
private void InsertBasicVaraibles(object param)
{
try
{
DataTablesMutex.WaitOne();//mutex for my shared resources
//insert into DB
}
catch (Exception ex)
{
//Handle
}
finally
{
DataTablesMutex.ReleaseMutex();
}
}
Aber zur Zeit der Mutex bietet keine Garantie für jede Bestellung. Es gibt keine Antwort, nachdem ich die detaillierte Frage gestellt habe !!!
per Definition ein Sperr-FIFO ist. Ein Thread geht rein und niemand kommt rein bis es rauskommt! –
@Mitch: Aber es gibt keine Garantie, dass der erste Thread, der warten musste, derjenige ist, der unmittelbar danach entsperrt wird. Also nein, Schlösser sind keine FIFOs. –
(d. H. Wenn T1 derzeit die Sperre hält, dann versucht T2 sie zu erfassen, dann versucht T3, sie zu erhalten, es gibt keine Garantie, dass T3 sie vor T2 erhält.) –