Полагаю , что останов функции main c помощью sleep неудачное решение разработчиков.
--------------------------------
Сам использую останов потока системным событием Event.
Неоднократно предлагал разработчикам реализовать останов потока системным событием Event.
Но воз и ныне там.
------------------------------
Чтобы показать наглядно эффективность предлагаемого способа реализовал следующий тест.
-----------------------
Во всех колбеках поставил счетчик вызова и старт таймера.
В функции main поставил останов таймера и запись в лог счетчиков событий всех колбеков и прошедшее время с момента вызова очередного колбека.
----------------------
Вот фрагмент лог файла:
...
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95846,0
83>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95847,0
90>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95848,0
129>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15785,95848,0
110>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95848,0
261>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
431>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
88>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95851,0
85>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95852,0
131>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15787,95852,0
113>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95852,0
162>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95853,0
91>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95854,0
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95854,0
294>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95855,0
....
На первой позиции время в микросекундах, прошедшее с момента вызова терминалом колбека до момента активации потока main скрипта.
далее через запятую счетчики вызова колбеков.
--------------------------------------------
Как видно из лог файла это время составляет примерно 100 мкс (компьютер слабый, WIN XP).
--------------------------
Получается, что использование функции sleep либо приведет к постоянной активации потока и бесполезной загрузки ядра,
либо к пропуску завершения работы колбеков.
Обе ситуации плохо.
--------------------------------
Сам использую останов потока системным событием Event.
Неоднократно предлагал разработчикам реализовать останов потока системным событием Event.
Но воз и ныне там.
------------------------------
Чтобы показать наглядно эффективность предлагаемого способа реализовал следующий тест.
-----------------------
Во всех колбеках поставил счетчик вызова и старт таймера.
В функции main поставил останов таймера и запись в лог счетчиков событий всех колбеков и прошедшее время с момента вызова очередного колбека.
----------------------
Вот фрагмент лог файла:
...
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95846,0
83>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95847,0
90>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15784,95848,0
129>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15785,95848,0
110>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95848,0
261>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
431>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95850,0
88>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95851,0
85>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15786,95852,0
131>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15787,95852,0
113>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95852,0
162>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95853,0
91>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15788,95854,0
93>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95854,0
294>0,0,0,0,11,11,0,0,0,0,0,0,0,0,15789,95855,0
....
На первой позиции время в микросекундах, прошедшее с момента вызова терминалом колбека до момента активации потока main скрипта.
далее через запятую счетчики вызова колбеков.
--------------------------------------------
Как видно из лог файла это время составляет примерно 100 мкс (компьютер слабый, WIN XP).
--------------------------
Получается, что использование функции sleep либо приведет к постоянной активации потока и бесполезной загрузки ядра,
либо к пропуску завершения работы колбеков.
Обе ситуации плохо.