@anarbus в глобальной переменной укажите время окончания работы, и пусть каждый поток периодически проверяет, не вышло ли это время, если вышло - завершить работу. А в асинхронной функции можно установить жесткий останов скрипта, если время превышено вдвое, например. Хотя, если всё отлажено, то асинхронка и не нужна.
Ошибка в работе скрипта
-
[23:20:35] Поток №3 : Поток выполнен успешно с сообщением "Ok"
[23:52:01] Поток №1 : Поток выполнен успешно с сообщением "Ok"
[00:02:12] Поток №4 : Поток выполнен успешно с сообщением "Ok"
[00:11:13] Поток №2 : Поток выполнен успешно с сообщением "Ok"
[00:11:13] Поток №2 : Поток завершился с сообщением "Все данные были обработаны для acc"
[00:11:16] Поток №4 : Поток завершился с сообщением "Все данные были обработаны для acc"
[00:11:17] Поток №1 : Поток завершился с сообщением "Все данные были обработаны для acc"
[00:11:18] Поток №3 : Поток завершился с сообщением "Все данные были обработаны для acc"
[00:11:18] Скрипт завершен корректно