C/C++多线程
Posted hellokitty2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++多线程相关的知识,希望对你有一定的参考价值。
一、pthread_once使相关代码只执行一次
这个函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。
#include <pthread.h> int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))
#include <iostream> #include <pthread.h> #include <unistd.h> using namespace std; pthread_once_t once = PTHREAD_ONCE_INIT; void once_run(void) { cout<<"once_run in thread "<<(unsigned int )pthread_self()<<endl; } void * child1(void * arg) { pthread_t tid =pthread_self(); cout<<"thread "<<(unsigned int )tid<<" enter"<<endl; pthread_once(&once,once_run); cout<<"thread "<<tid<<" return"<<endl; } void * child2(void * arg) { pthread_t tid =pthread_self(); cout<<"thread "<<(unsigned int )tid<<" enter"<<endl; pthread_once(&once,once_run); cout<<"thread "<<tid<<" return"<<endl; } int main(void) { pthread_t tid1,tid2; cout<<"main thread enter"<<endl; pthread_create(&tid1,NULL,child1,NULL); pthread_create(&tid2,NULL,child2,NULL); sleep(10); cout<<"main thread exit"<<endl; return 0; } /* main thread enter thread 4144080640 enter once_run in thread 4144080640 thread 139667890611968 return thread 4152473344 enter thread 139667899004672 return main thread exit */
以上是关于C/C++多线程的主要内容,如果未能解决你的问题,请参考以下文章