pthread_once与线程安全的单例模式
在单例模式的class设计的时候,常常会看到一种写法:
if(xxx==NULL)
{
LOCK();
if(xxx==NULL)
{
xxx=new XXX();
}
return xxx;
}
这个办法叫做double check locking(缩写为DCL)。在《Linux多线程服务端》一书中,作者提出DCL已经靠不住,并提出了使用pthread_once来实现单例的线程安全。
pthread_once
#include <pthread.h>
int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));
在多线程环境中,有些事仅需要执行一次。通常当初始化应用程序时,可以比较容易地将其放在main函数中。但当你写一个库时&