• R
    optimize cancellation enable/disable code · ebf82447
    Rich Felker 提交于
    the goal is to be able to use pthread_setcancelstate internally in
    the implementation, whenever a function might want to use functions
    which are cancellation points but avoid becoming a cancellation point
    itself. i could have just used a separate internal function for
    temporarily inhibiting cancellation, but the solution in this commit
    is better because (1) it's one less implementation-specific detail in
    functions that need to use it, and (2) application code can also get
    the same benefit.
    
    previously, pthread_setcancelstate dependend on pthread_self, which
    would pull in unwanted thread setup overhead for non-threaded
    programs. now, it temporarily stores the state in the global libc
    struct if threads have not been initialized, and later moves it if
    needed. this way we can instead use __pthread_self, which has no
    dependencies and assumes that the thread register is already valid.
    ebf82447
pthread_setcancelstate.c 326 字节