Junior — Middle
C++'ta std::condition_variable'in amacını ve çalışma şeklini açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
C++ dilinde std::condition_variable, iş parçacıkları arasındaki senkronizasyonu düzenlemek için kullanılır. Bir veya birkaç iş parçacığının belirli bir olayın gerçekleşmesini beklemesine izin verirken, aynı zamanda diğer iş parçacıklarının bekleyen ilk iş parçacığının durumu üzerinde değişiklik yapabilmesi için mutex'i serbest bırakır.
Ana noktalar:
- İş parçacığı, sahip olduğu mutex ile
waitfonksiyonunu çağırır. - Bekleme sırasında mutex serbest bırakılır, böylece diğer iş parçacıkları paylaşılan verilere erişebilir.
- Olay gerçekleştiğinde, başka bir iş parçacığı
notify_oneveyanotify_allçağırarak bekleyen iş parçacıklarını uyandırır. - Uyandıktan sonra, iş parçacığı tekrar mutex'i alır ve durumu kontrol eder.
Kullanım örneği:
#include <mutex>
#include <condition_variable>
#include <queue>
std::mutex mtx;
std::condition_variable cv;
std::queue<int> dataQueue;
void producer() {
std::unique_lock<std::mutex> lock(mtx);
dataQueue.push(42);
cv.notify_one();
}
void consumer() {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return !dataQueue.empty(); });
int data = dataQueue.front();
dataQueue.pop();
// verilerin işlenmesi
}
Bu şekilde, condition_variable etkin bir şekilde bekleme ve bildirim organizasyonu sağlar, aktif polling olmadan iş parçacıkları arasında iletişimi kolaylaştırır.