сон, вызванный из потока, никогда не закончится с большим временем

У меня есть базовая функция таймера, но она будет работать только тогда, когда период сна довольно мал. Если DELAY меньше 500 мс, функция будет работать нормально. Я пробовал другие методы сна, в том числе sleep (), usleep (), nanosleep () и gettimeofday (), и все они перестают работать, когда DELAY (с поправкой на каждую функцию) слишком велик (обычно перестает работать между 0,3 и 0,5 секунды). Когда это не работает, спящая функция не будет ничего возвращать, она просто никогда не завершит выполнение.

Например:

void executeTimer(MyObject *obj) {
printf("Starting timer, delay = %d\n", DELAY);
std::this_thread::sleep_for(std::chrono::milliseconds(DELAY));
printf("Complete\n");
obj->doSomething();
}

Позвонил позже в программе через:

timer = std::thread(executeTimer, this);

никогда не будет выводить «Complete», если DELAY больше 400-500.

Кто-нибудь знает, почему это не будет работать? Спасибо за помощь!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]