don't use pthread_once when there is no danger in race
authorRich Felker <dalias@aerifal.cx>
Sun, 17 Apr 2011 16:15:55 +0000 (12:15 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 17 Apr 2011 16:15:55 +0000 (12:15 -0400)
src/thread/cancel_impl.c

index 28dc84d..7bcfaef 100644 (file)
@@ -71,8 +71,11 @@ static void init_cancellation()
 
 int pthread_cancel(pthread_t t)
 {
-       static pthread_once_t once;
-       pthread_once(&once, init_cancellation);
+       static int init;
+       if (!init) {
+               init_cancellation();
+               init = 1;
+       }
        a_store(&t->cancel, 1);
        return pthread_kill(t, SIGCANCEL);
 }