• R
    completely new barrier implementation, addressing major correctness issues · f16a3089
    Rich Felker 提交于
    the previous implementation had at least 2 problems:
    
    1. the case where additional threads reached the barrier before the
    first wave was finished leaving the barrier was untested and seemed
    not to be working.
    
    2. threads leaving the barrier continued to access memory within the
    barrier object after other threads had successfully returned from
    pthread_barrier_wait. this could lead to memory corruption or crashes
    if the barrier object had automatic storage in one of the waiting
    threads and went out of scope before all threads finished returning,
    or if one thread unmapped the memory in which the barrier object
    lived.
    
    the new implementation avoids both problems by making the barrier
    state essentially local to the first thread which enters the barrier
    wait, and forces that thread to be the last to return.
    f16a3089
pthread_barrier_wait.c 1.5 KB