shithub: npe

ref: 9b9baca20eb6f5b86c460b5e7c0d3733fd5c6983
dir: /libnpe_pthread/pthread_once.c/

View raw version
#include <npe.h>
#include <pthread.h>
#include "_pthread.h"

enum {
	Done = 13666,
};

int
pthread_once(pthread_once_t *once, void (*init_routine)(void))
{
	if(once->done != Done){
		qlock(once);
		if(once->done != Done){
			once->done = Done;
			init_routine();
		}
		qunlock(once);
	}

	return 0;
}