Преглед на файлове

avoid using signals when a thread attempts to cancel itself

not only is pthread_kill expensive in this case; it also breaks
testing under qemu app-level emulation.
Rich Felker преди 9 години
родител
ревизия
aecda35373
променени са 1 файла, в които са добавени 1 реда и са изтрити 0 реда
  1. 1 0
      src/thread/pthread_cancel.c

+ 1 - 0
src/thread/pthread_cancel.c

@@ -92,5 +92,6 @@ int pthread_cancel(pthread_t t)
 		init = 1;
 	}
 	a_store(&t->cancel, 1);
+	if (t == pthread_self() && !t->cancelasync) return 0;
 	return pthread_kill(t, SIGCANCEL);
 }