Я использовал clock_gettime
с CLOCK_REALTIME
сам. Это должно работать удовлетворительно и позволить вам легко создать абсолютную временную спецификацию для тайм-аута в.
Действительно, существует вероятность того, что машинное время будет увеличиваться, пока вы выполняете настройку ожидания. В общем, если вы ожидаете достаточно малого времени, чтобы это имело значение, вы не будете приближаться к запрошенному времени пробуждения так, как надеетесь. Если запрошенное вами время уже прошло к моменту времени ожидания вызова, оно должно сразу же проснуться.
Solaris предоставляет pthread_cond_reltimedwait_np
, (np означает непереносимый), но я не знаю ни одной такой функции в Linux. Я бы посоветовал просто подождать в абсолютное время и, если необходимо, самостоятельно установить относительное ожидание.