⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 once.c

📁 linux thread programe
💻 C
字号:
/******************************************************** * An example source module to accompany... * * "Using POSIX Threads: Programming with Pthreads" *     by Brad nichols, Dick Buttlar, Jackie Farrell *     O'Reilly & Associates, Inc. * ******************************************************** * once_exam.c * * An example of using the pthreads_once() call to execute an * initialization procedure. * * A program spawns multiple threads and each one tries to * execute the routine welcome() using the once call. Only * the first thread into the once routine will actually * execute welcome(). * * The program's main thread synchronizes its exit with the * exit of the threads using the pthread_join() operation. **/#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <pthread.h>#define  NUM_THREADS   10static pthread_once_t welcome_once_block = PTHREAD_ONCE_INIT;void welcome(void){	printf("welcome: Welcome\n");}void *identify_yourself(void *arg){        int *pid=(int *)arg;	int rtn;	if ((rtn = pthread_once(&welcome_once_block,			        welcome)) != 0) {		fprintf(stderr, "pthread_once failed with %d",rtn);		pthread_exit((void *)NULL);	}	printf("identify_yourself: Hi, I'm thread # %d\n",*pid);        return(NULL);}extern intmain(void){	int             *id_arg, thread_num, rtn;	pthread_t       threads[NUM_THREADS];	id_arg = (int *)malloc(NUM_THREADS*sizeof(int));	for (thread_num = 0; thread_num < NUM_THREADS; (thread_num)++) {		id_arg[thread_num] = thread_num;		if (( rtn = pthread_create(&threads[thread_num], 					   NULL,					   identify_yourself,					   (void *) &(id_arg[thread_num]))) 		    != 0) {		  fprintf(stderr, "pthread_create failed with %d",rtn);		  exit(1);		}	} 		for (thread_num = 0; thread_num < NUM_THREADS; thread_num++) {	  pthread_join(threads[thread_num], NULL);	  printf("main: joined to thread %d\n", thread_num);	}	printf("main: Goodbye\n");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -