pthread condition mutex
来源:互联网 发布:mac深圳 编辑:程序博客网 时间:2024/05/09 07:02
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#define NUM_THREADS 3#define TCOUNT 10#define COUNT_LIMIT 12int count = 0;int thread_ids[3] = {0,1,2};pthread_mutex_t count_mutex;pthread_cond_t count_threshold_cv;void* inc_count(void *t){ int i; long my_id = (long)t; for(i=0; i<TCOUNT; i++) { pthread_mutex_lock(&count_mutex); count++; if(count == COUNT_LIMIT) { pthread_cond_signal(&count_threshold_cv); printf("inc_count(): thread %ld, count = %d Threshold reached.\n", my_id, count); } printf("inc_count(): thread %ld , count = %d, unlocking mutex\n", my_id, count); pthread_mutex_unlock(&count_mutex); sleep(1); } pthread_exit(NULL);}void *watch_count(void *t) { long my_id = (long)t; printf("Starting watch_count(): thread %ld\n", my_id); pthread_mutex_lock(&count_mutex); while(count<COUNT_LIMIT) { pthread_cond_wait(&count_threshold_cv, &count_mutex); printf("watch_count(): thread %ld Condition signal received.\n", my_id); count += 125; printf("watch_count(): thread %ld count now = %d.\n", my_id, count); } pthread_mutex_unlock(&count_mutex); pthread_exit(NULL);}int main(){ int i, rc; long t1=1, t2=2, t3=3; pthread_t threads[3]; pthread_attr_t attr; pthread_mutex_init(&count_mutex, NULL); pthread_cond_init(&count_threshold_cv, NULL); pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); pthread_create(&threads[0], &attr, watch_count, (void*)t1); pthread_create(&threads[1], &attr, inc_count, (void*)t2); pthread_create(&threads[2], &attr, inc_count, (void*)t3); for(i=0; i<NUM_THREADS; i++) { pthread_join(threads[i], NULL); } printf("Main(): Waited on %d threads, Done\n", NUM_THREADS); pthread_attr_destroy(&attr); pthread_mutex_destroy(&count_mutex); pthread_cond_destroy(&count_threshold_cv); pthread_exit(NULL); return 0;}
inc_count(): thread 3 , count = 1, unlocking mutexinc_count(): thread 2 , count = 2, unlocking mutexStarting watch_count(): thread 1inc_count(): thread 3 , count = 3, unlocking mutexinc_count(): thread 2 , count = 4, unlocking mutexinc_count(): thread 3 , count = 5, unlocking mutexinc_count(): thread 2 , count = 6, unlocking mutexinc_count(): thread 3 , count = 7, unlocking mutexinc_count(): thread 2 , count = 8, unlocking mutexinc_count(): thread 3 , count = 9, unlocking mutexinc_count(): thread 2 , count = 10, unlocking mutexinc_count(): thread 3 , count = 11, unlocking mutexinc_count(): thread 2, count = 12 Threshold reached.inc_count(): thread 2 , count = 12, unlocking mutexwatch_count(): thread 1 Condition signal received.watch_count(): thread 1 count now = 137.inc_count(): thread 3 , count = 138, unlocking mutexinc_count(): thread 2 , count = 139, unlocking mutexinc_count(): thread 3 , count = 140, unlocking mutexinc_count(): thread 2 , count = 141, unlocking mutexinc_count(): thread 3 , count = 142, unlocking mutexinc_count(): thread 2 , count = 143, unlocking mutexinc_count(): thread 3 , count = 144, unlocking mutexinc_count(): thread 2 , count = 145, unlocking mutexMain(): Waited on 3 threads, Done
0 0
- pthread condition mutex
- pthread条件变量condition(配合mutex锁使用)
- pthread condition
- pthread条件变量condition(配合mutex锁使用),经典,有图
- pthread条件变量condition(配合mutex锁使用),经典,有图
- mutex and Condition Variables
- android mutex and condition
- boost mutex condition
- 2 condition & mutex
- pthread mutex vs spinlock
- pthread mutex 属性
- pthread mutex用法
- std::mutex与pthread mutex区别
- 线程同步:Mutex和Condition
- mutex 和 condition variable[转载]
- mutex和condition的用法
- 多线程编程 sigaction ,mutex, pthread
- linux程序设计笔记--pthread--mutex
- NDK单步调试
- DISPO与EKGRP 的关系(MRP控制者和采购组)
- poj 3264 balanced lineup
- 产品经理常用的那些图
- uva11464 - Age Sort
- pthread condition mutex
- Java中file类getPath(),getAbsolutePath(),getCanonicalPath()方法区别
- IPC(Inner Process Comunication)机制基本了解
- 从头认识Spring-1.14 SpEl表达式(1)-简介与嵌入值
- java中split()特殊符号"." "|" "*" "\" "]"
- pig安装和配置 详细教程
- Android studio的加速
- cocos2d-x核心概念(三)——精灵,场景与层
- select,poll和epoll的区别