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

📄 cvsimple.c

📁 linux 多线程例子
💻 C
字号:
/******************************************************** * An example source module to accompany... * * "Using POSIX Threads: Programming with Pthreads" *     by Brad nichols, Dick Buttlar, Jackie Farrell *     O'Reilly & Associates, Inc. * ******************************************************** * * cvsimple.c * * Demonstrates pthread cancellation. * */#include <stdio.h>#include <pthread.h>#define NUM_THREADS  3#define TCOUNT 10#define COUNT_THRES 12int     count = 0;int     thread_ids[3] = {0,1,2};pthread_mutex_t count_lock=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t count_hit_threshold=PTHREAD_COND_INITIALIZER; void *inc_count(void *idp){  int i=0, save_state, save_type;  int *my_id = idp;  for (i=0; i<TCOUNT; i++) {    pthread_mutex_lock(&count_lock);    count++;    printf("inc_counter(): thread %d, count = %d, unlocking mutex\n", 	   *my_id, count);    if (count == COUNT_THRES) {      printf("inc_count(): Thread %d, count %d\n", *my_id, count);      pthread_cond_signal(&count_hit_threshold);    }    pthread_mutex_unlock(&count_lock);  }    return(NULL);}void *watch_count(void *idp){  int i=0, save_state, save_type;  int *my_id = idp;  printf("watch_count(): thread %d\n", *my_id);    pthread_mutex_lock(&count_lock);  while (count < COUNT_THRES) {    pthread_cond_wait(&count_hit_threshold, &count_lock);    printf("watch_count(): thread %d, count %d\n", *my_id, count);  }  pthread_mutex_unlock(&count_lock);    return(NULL);}extern intmain(void){  int       i;  pthread_t threads[3];  pthread_create(&threads[0], NULL, inc_count, (void *)&thread_ids[0]);  pthread_create(&threads[1], NULL, inc_count, (void *)&thread_ids[1]);  pthread_create(&threads[2], NULL, watch_count, (void *)&thread_ids[2]);  for (i = 0; i < NUM_THREADS; i++) {    pthread_join(threads[i], NULL);  }  return 0;}

⌨️ 快捷键说明

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