📄 specific.c
字号:
/******************************************************** * An example source module to accompany... * * "Using POSIX Threads: Programming with Pthreads" * by Brad nichols, Dick Buttlar, Jackie Farrell * O'Reilly & Associates, Inc. * ******************************************************** * specific.c * */#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/time.h>#include <pthread.h>#define NUM_THREADS 3pthread_key_t saved_time_key;void free_time(void *arg ){ struct timeval *timep=(struct timeval *)arg; printf("free_time:\n"); free(timep);}void save_the_time(void){ struct timeval *timep; timep = (struct timeval *)malloc(sizeof(struct timeval)); gettimeofday(timep, (void *)0); printf("save_the_time: \t\t%ld %ld\n",timep->tv_sec, timep->tv_usec); pthread_setspecific(saved_time_key, (void *)timep); }void what_time_did_i_save(void){ int rtn; struct timeval *timep; timep = pthread_getspecific(saved_time_key); printf("what_time_did_i_save: \t%ld %ld\n",timep->tv_sec, timep->tv_usec);} void *thread_routine(void *arg){ int *my_id=(int *)arg; printf("thread_routine %d\n", *my_id); save_the_time(); what_time_did_i_save(); return(NULL); }extern int main(void){ int i, *id_arg; pthread_t threads[NUM_THREADS]; id_arg = (int *)malloc(NUM_THREADS*sizeof(int)); printf("main : initializing the key\n"); pthread_key_create(&saved_time_key, free_time); printf("main : spawing the threads\n"); for (i = 0; i < NUM_THREADS; i++) { id_arg[i] = i; pthread_create(&(threads[i]), NULL, thread_routine, (void *) &(id_arg[i])); } for (i = 0; i < NUM_THREADS; i++) { pthread_join(threads[i], NULL); printf("main : thread %d has finished. \n", i); } printf("main : goodbye\n"); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -