pthread_once()操作
pthread_once()
[@more@]pthread_once()操作 僅執行一次的操作
int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))
本函式使用初值為PTHREAD_ONCE_INIT的once_control變數保證init_routine()函式在本程式執行序列中僅執行一次。
#include
#include
pthread_once_t once=PTHREAD_ONCE_INIT;
void once_run(void)
{
printf("once_run in thread
%dn",pthread_self());
}
void * child1(void *arg)
{
int tid=pthread_self();
printf("thread %d entern",tid);
pthread_once(&once,once_run);
printf("thread %d returnsn",tid);
}
void * child2(void *arg)
{
int tid=pthread_self();
printf("thread %d entern",tid);
pthread_once(&once,once_run);
printf("thread %d returnsn",tid);
}
int main(void)
{
int tid1,tid2;
printf("hellon");
pthread_create(&tid1,NULL,child1,NULL);
pthread_create(&tid2,NULL,child2,NULL);
sleep(10);
printf("main thread exitn");
return 0;
}
once_run()函式僅執行一次,且究竟在哪個執行緒中執行是不定的,儘管pthread_once(&once,once_run)出現在兩個執行緒中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23168012/viewspace-1045837/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pthread_once導致死鎖thread
- pthread_once詳解和使用thread
- JQ操作標籤--樣式操作、 位置操作、尺寸、 文字操作、 獲取值操作、 屬性操作、文件處理、事件事件
- Go 操作 Redis 的基本操作GoRedis
- Pytorch AdaptivePooing操作轉Pooling操作PyTorchAPT
- 操作
- JavaScript騷操作之操作符JavaScript
- Hive高階操作-查詢操作Hive
- 坐下坐下,基本操作(ZooKeeper 操作篇)
- 使用java操作ranger,hdfs ranger授權操作,hive ranger授權操作JavaRangerHive
- 熟悉常用的Linux操作和Hadoop操作LinuxHadoop
- Go 語言操作 MySQL 之 CURD 操作GoMySql
- ES入門三部曲:索引操作,對映操作,文件操作索引
- mongoDB操作MongoDB
- DOM操作
- checkbox操作
- DOM 操作
- tlmgr 操作
- vim操作
- git操作Git
- playwright 操作
- Anaconda 操作
- 日常操作
- DGfailover操作AI
- Git 操作Git
- HiveSelect操作Hive
- docker操作Docker
- Jedis操作
- conda操作
- CAS操作
- 流操作
- 位操作
- 字串操作字串
- BOM操作
- gorm 操作GoORM
- js操作JS
- firewalld操作
- kibana 操作
- MongoDB的常用Query操作及操作符MongoDB