Uyarılabilir G/Ç
Uyarılabilen G/Ç, uygulama iş parçacıklarının zaman uyumsuz G/Ç isteklerini yalnızca uyarılabilir durumdayken işlediği yöntemdir.
bir iş parçacığının uyarılabilen bir durumda olduğunu anlamak için aşağıdaki senaryoyu göz önünde bulundurun:
- İş parçacığı, bir geri çağırma işlevinin işaretçisiyle ReadFileEx çağırarak zaman uyumsuz bir okuma isteği başlatır.
- İş parçacığı, bir geri çağırma işlevinin işaretçisiyle WriteFileEx çağırarak zaman uyumsuz bir yazma isteği başlatır.
- İş parçacığı, uzak veritabanı sunucusundan bir veri satırı getiren bir işlevi çağırır.
Bu senaryoda, ReadFileEx ve WriteFileEx çağrıları büyük olasılıkla 3. adımda işlev çağrısından önce döndürülecektir. Bunu yaptıklarında, çekirdek işaretçileri iş parçacığının Zaman Uyumsuz Yordam Çağrısı (APC) kuyruğundaki geri çağırma işlevlerine yerleştirir. Çekirdek, döndürülen G/Ç isteği verilerini ilgili iş parçacığı tarafından işlenebilene kadar tutmak için bu kuyruğu özel olarak korur.
Satır getirme işlemi tamamlandığında ve iş parçacığı işlevden döndürdüğünde, en yüksek önceliği geri çağırma işlevlerini çağırarak kuyrukta döndürülen G/Ç isteklerini işlemektir. Bunu yapmak için uyarılabilen bir durum girmelidir. bir iş parçacığı bunu yalnızca uygun bayraklarla aşağıdaki işlevlerden birini çağırarak yapabilir:
- SleepEx
- WaitForSingleObjectEx
- WaitForMultipleObjectsEx
- SignalObjectAndWait
- msgWaitForMultipleObjectsEx
İş parçacığı uyarılabilir bir duruma girdiğinde aşağıdaki olaylar gerçekleşir:
- Çekirdek, iş parçacığının APC kuyruğuna denetler. Kuyruk geri çağırma işlevi işaretçileri içeriyorsa, çekirdek işaretçiyi kuyruktan kaldırır ve iş parçacığına gönderir.
- İş parçacığı geri çağırma işlevini yürütür.
- Kuyrukta kalan her işaretçi için 1. ve 2. adımlar yinelenir.
- Kuyruk boş olduğunda, iş parçacığı onu uyarılabilir bir duruma getiren işlevden döner.
Bu senaryoda, iş parçacığı uyarılabilen bir duruma girdikten sonra, ReadFileEx ve WriteFileEx'e gönderilen geri çağırma işlevlerini çağırır ve ardından bunu uyarılabilir duruma getiren işlevden geri döner.
Bir iş parçacığı APC kuyruğu boşken uyarılabilir bir duruma girerse, aşağıdakilerden biri gerçekleşene kadar iş parçacığının yürütülmesi çekirdek tarafından askıya alınır:
- Üzerinde beklenen çekirdek nesnesi işaretlenir.
- Geri çağırma işlevi işaretçisi APC kuyruğuna yerleştirilir.
Uyarılabilen G/Ç kullanan bir iş parçacığı zaman uyumsuz G/Ç isteklerini yalnızca ayarlanacak ÇAKıŞAN yapısındaki olay bayrağını beklemelerinden daha verimli işler ve uyarılabilen G/Ç mekanizması, G/Ç tamamlama bağlantı noktalarının daha az karmaşıktır. Ancak, uyarılabilen G/Ç, G/Ç isteğinin sonucunu yalnızca onu başlatan iş parçacığına döndürür. G/Ç tamamlama bağlantı noktalarının bu sınırlaması yoktur.
İlgili konular