pthread_detach.c 423 B

1234567891011121314
  1. #include "pthread_impl.h"
  2. #include <threads.h>
  3. static int __pthread_detach(pthread_t t)
  4. {
  5. /* If the cas fails, detach state is either already-detached
  6. * or exiting/exited, and pthread_join will trap or cleanup. */
  7. if (a_cas(&t->detach_state, DT_JOINABLE, DT_DETACHED) != DT_JOINABLE)
  8. return __pthread_join(t, 0);
  9. return 0;
  10. }
  11. weak_alias(__pthread_detach, pthread_detach);
  12. weak_alias(__pthread_detach, thrd_detach);