while (controller_thread_enable_get(&main->thread) == controller_thread_enable_e) {
+ // Allow thread to be interrupted and auto-cancelled while sleeping.
+ f_thread_cancel_state_set(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
+
controller_time_now(
main->setting.flag & controller_main_flag_simulate_d
? controller_thread_cleanup_interval_short_d
else {
status = F_okay;
- // Allow thread to be interrupted and auto-cancelled while sleeping.
- f_thread_cancel_state_set(PTHREAD_CANCEL_ASYNCHRONOUS, 0);
-
f_time_sleep_spec(delay, 0);
-
- // Prevent thread from being interrupted and auto-cancelled.
- f_thread_cancel_state_set(PTHREAD_CANCEL_DEFERRED, 0);
}
+ // Prevent thread from being interrupted and auto-cancelled.
+ f_thread_cancel_state_set(PTHREAD_CANCEL_DEFERRED, 0);
+
// Reaping child processes is not critical, so don't care if the reap flag cannot be unset.
if (!controller_thread_signal_get(&main->thread) && F_status_is_error_not(status)) {
memset((void *) &signal_data, 0, sizeof(siginfo_t));