Explorar o código

don't use pthread_once when there is no danger in race

Rich Felker %!s(int64=14) %!d(string=hai) anos
pai
achega
02eff258c6
Modificáronse 1 ficheiros con 5 adicións e 2 borrados
  1. 5 2
      src/thread/cancel_impl.c

+ 5 - 2
src/thread/cancel_impl.c

@@ -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);
 }