Bu nedir ve nasıl kullanılır?C# içinde FIFO siparişini garanti eden bir senkronizasyon sınıfı var mı?
Her saniye DB'ye ekleyen bir zamanlayıcım olduğu için ve zamanlayıcı işleyici ile ana iş parçacığı arasında paylaşılan bir kaynağa sahip olmak zorundayım. Zamanlayıcı işleyicisinin, ekleme işleminde bir saniyeden uzun sürmesi durumunda, beklemedeki iş parçacıklarının sırayla çalıştırılması gerektiğini garanti ediyorum. Bu benim zamanlayıcı işleyici
private void InsertBasicVaraibles(object param)
{
try
{
DataTablesMutex.WaitOne();//mutex for my shared resources
//insert into DB
}
catch (Exception ex)
{
//Handle
}
finally
{
DataTablesMutex.ReleaseMutex();
}
}
için bir örnek kod Ama şu anda muteksin herhangi bir sipariş garanti etmez. Detaylı soruya cevap verdikten sonra cevap yok!
tanımı gereği bir kilit FIFO geçerli:
Evreselliğin konu ile ilgili olarak bu kod güncellenmiştir. Bir iş parçacığı içeri girer ve dışarı çıkana kadar başka kimse giremez! –@Mitch: Ama beklemek zorunda kaldığı ilk iş parçacığının, hemen sonra engellemeyi kaldırdığının garantisi yok. Yani hayır, kilitler FIFO değil. –
(yani, T1 şu anda kilidi tutuyorsa, T2 bunu elde etmeye çalışır, sonra T3 bunu elde etmeye çalışır, T3'ün T2'yi almadan önce alacağı garantisi yoktur.) –