sigset_t sigset;
sigfillset(&sigset);
sigdelset(&sigset, PTHREAD_XSIG_STOP);
- while(!pthread_user_data_internal(pthread_self())->running) {
+ if(!pthread_user_data_internal(pthread_self())->running) {
sigsuspend(&sigset);
}
}
void pthread_pause_enable() {
+ //Add thread to internal registry
+ pthread_user_data_internal(pthread_self());
+
//Nesting signals too deep is not good for stack
//You can get runtime stats using following command:
//grep -i sig /proc/$(pgrep binary)/status
}
void pthread_pause_disable() {
+ //Add thread to internal registry
+ pthread_user_data_internal(pthread_self());
+
//Block signal
sigset_t sigset;
sigemptyset(&sigset);