/ Кореспонденция на работник и прекъсвач в Boost - C ++, тласък, усилване на нишката

Работа и прекъсване на координатите на нишките в Boost - C ++, тласък, тласък на конеца

Вид на C ++ и още повече Boost noobie тук. Успешно успях да създам две нишки въз основа на това пример, един работник и един прекъсвач. Последният спи, чрез this_thread :: sleep_for за 50 секунди и прекъсва Worker, ако не е направен през това време, с правилното използване на while! This_thread :: interruption_requested () и thread :: interrupt (). Така че това е много приятен и лесен механизъм за изчакване.Моят проблем е как да спрете Interrupter сън по-рано? Искам да кажа, ако Worker завърши преди това 50 секунди, аз правя this_thread :: доходност или this_thread :: interruption_requested (и двете изглежда работят), но Прекъсвачът все още спи и трябва да изчака 50 секунди, за да се събуди :(

Има ли някакъв начин да се направи този механизъм за изчакване, но ако Worker се свърши с работата му преди сънят да свърши, да уведоми / събуди Interrupter?

PS: Имам ли нужда от някаква синхронизация, когато всичко е свършено?

Отговори:

0 за отговор № 1

Прекъсвачът ви не трябва да спибезусловно в продължение на 50 секунди, но изчакайте условната променлива за 50 секунди, ако завъртането на работника завърши по-рано, ще сигнализира условното var и прекъсвачът ще се събуди. Можете да използвате и двете STD :: conditional_variable или един от тласък със същото име