Witam
Piszę aplikacje w której potrzebuję cały czas sprawdzać np. wartość jakiejś zmiennej i gdy zdarzy się tak że przyjmie oczekiwaną wartość wykonać jakieś działanie i to wszystko w tle czyli w innym wątku, taki daemon. Mógłbym użyć do tego nieskończonej pętli ale pętla taka zżera trochę procesora no i niezbyt chcę używać sleepów bo chciałbym uzyskać jak najkrótszą reakcje.
Chciałbym uzyskać coś w tym stylu:
while(true) {
if(JakisObiekt->wartosc == true) { // Fajnie byłoby to zablokować jak np. blokuje się recv(), mutex.lock(), select() itp.
// Wykonywane instrukcje
}
}
Takie rozwiązanie byłoby dobre gdybym dał tam np. sleep(10000) wtedy mam znikome użycie procesora no ale czas reakcji znacząco wzrasta.
Istnieje jakiś sposób na zablokowanie programu do czasu spełnienia się jakiegoś warunku, eventu? Jakaś funkcja w stylu recv(), select()? Może istnieje jakiś sposób na ograniczenie użycia procesora w nieskończonej pętli bez sleep() ?
Z góry dziękuję za wszystkie odpowiedzi. ;)