Add to registry
[mirrors/Programs.git] / c / pthread_extra / pthread_pause.c
index 662d78fdd99a949e041a15c093f862c01d1f5a5d..1eacdf498d049aa2f50e73219f0042375612b11d 100644 (file)
@@ -19,12 +19,15 @@ void pthread_pause_handler() {
        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
@@ -42,6 +45,9 @@ void pthread_pause_enable() {
 }
 
 void pthread_pause_disable() {
+       //Add thread to internal registry
+       pthread_user_data_internal(pthread_self());
+
        //Block signal
        sigset_t sigset;
        sigemptyset(&sigset);
This page took 0.124567 seconds and 4 git commands to generate.