Critical Section Objects Hakkında Bilgi

Bilgisayar Mühendisliği Notları
By -
0

 CRITICAL_SECTION WinAPI (Windows API) içinde bir senkronizasyon nesnesidir ve çoklu iş parçacıklı programlarda kritik bölgelere erişimi kontrol etmek için kullanılır. Bu nesne, iş parçacıkları arasında karşılıklı dışlama (mutex) sağlamak için kullanılır.

CRITICAL_SECTION kullanımı, InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection ve DeleteCriticalSection gibi işlevleri içerir. İş parçacıkları, kritik bölgeye (CRITICAL_SECTION) girmek istediklerinde EnterCriticalSection fonksiyonunu kullanır ve bu bölgeden çıktıklarında LeaveCriticalSection fonksiyonunu kullanır. Kritik bölgeye giriş sırasında, başka bir iş parçacığının aynı kritik bölgeye girmesi engellenir (karşılıklı dışlama).

ÖRNEK KODU ;

#include <Windows.h> #include <iostream> CRITICAL_SECTION criticalSection; int globalVariable = 0; void ThreadFunction() { for (int i = 0; i < 100000; ++i) { EnterCriticalSection(&criticalSection); globalVariable++; LeaveCriticalSection(&criticalSection); } } int main() { // Kritik bölgeyi başlat InitializeCriticalSection(&criticalSection); // Thread'leri başlat HANDLE thread1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunction, NULL, 0, NULL); HANDLE thread2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunction, NULL, 0, NULL); // Thread'leri bekle WaitForSingleObject(thread1, INFINITE); WaitForSingleObject(thread2, INFINITE); // Kritik bölgeyi temizle DeleteCriticalSection(&criticalSection); std::cout << "Global Variable: " << globalVariable << std::endl; return 0; }


Yorum Gönder

0Yorumlar

Yorum Gönder (0)