Когато използвате boost::conditional_variable
, ACE_Conditional
или директно pthread_cond_wait
, има ли допълнителни разходи за самото изчакване? Това са по-специфични проблеми, които създават проблеми:
- След като чакащата нишка е непланирана, ще бъде ли планирана обратно преди изтичането на изчакването и след това отново непланирана или ще остане непланирана, докато не бъде сигнализирана?
wait
придобива ли периодично мютекса? В този случай предполагам, че всяка итерация губи малко процесорно време при системни извиквания за заключване и освобождаване на мютекса. Същото ли е като непрекъснато придобиване и пускане на мютекс?- Освен това колко време минава между сигнала и връщането от
wait
?
Afaik, когато се използват семафори, отзивчивостта на повикванията за придобиване зависи от размера на времевия отрязък на планировчика. Как работи в pthread_cond_wait
? Предполагам, че това зависи от платформата. Интересувам се повече от Linux, но ако някой знае как работи на други платформи, също ще помогне.
И още един въпрос: има ли допълнителни системни ресурси, разпределени за всяко условие? Няма да създам 30 000 мютекса в кода си, но трябва ли да се тревожа за 30 000 условни израза, които използват един и същ мютекс?