The second increment of refcnt must occur before pthread_create
or a subtle possibility of a double free() occurs if the thread
runs immediately and self-joins before the second inc.
Also use atomic ops for joinable flag to ensure that
concurrent joins will error properly.