pthread_cond_timedwait, возвращающийся сразу

Вы переделываете переменную host локально (это также называется «теневым копированием»)

host := new(objects.HostOS)

, вместо этого вы должны использовать оператор присваивания

host = new(objects.HostOS)
7
задан Claudiu 19 March 2009 в 03:00
поделиться

2 ответа

pthread_cond_timedwait занимает абсолютное время, не относительное время. Необходимо сделать время ожидания абсолютным путем добавления к текущему времени к значению тайм-аута.

14
ответ дан 6 December 2019 в 06:38
поделиться

Условная переменная может побочно разблокировать. Необходимо проверить его в цикл и проверить условие каждый раз через. Необходимо будет, вероятно, обновить значение тайм-аута также.

Я нашел некоторую документацию для pthread_cond_timedwait здесь.

При использовании условных переменных всегда существует булев предикат, включающий совместно используемые переменные, связанные с каждым условием, ожидают, который верен, если поток должен продолжиться. Могут произойти побочные пробуждения от pthread_cond_timedwait () или pthread_cond_wait () функции. Так как возврат из pthread_cond_timedwait () или pthread_cond_wait () ничего не подразумевает о значении этого предиката, предикат должен быть переоценен по такому возврату.

4
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: