多线程(16) pthread_once
1. pthread_once定义
在多线程环境中,有些事仅需要执行一次。
使用(某个时间在整个程序中仅执行一次,不确定是那个线程)
2. 接口参数
int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));
功能:本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。
在多线程编程环境下,尽管pthread_once()调用会出现在多个线程中,init_routine()函数仅执行一次,究竟在哪个线程中执行是不定的,是由内核调度来决定。
3. 代码例子
例子:
pthread_once_t g_stInitFlag;
void initSomeData()
{
……
}
(VOID)pthread_once(&g_stInitFlag, initSomeData);