1. #define _GNU_SOURCE
  2. #include <unistd.h>
  3. #include <pthread.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. //static pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;
  7. // 这里虽然是 P/V ,但是用 cond 确实更方便。
  8. static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
  9. static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
  10. int i =0;
  11. void get()
  12. {
  13. pthread_mutex_lock(&mutex);
  14. while( i ==0 ) // 队列下限
  15. pthread_cond_wait(&cond, &mutex);// 唤醒其它线程进行检测。
  16. --i;
  17. pthread_cond_signal(&cond);
  18. printf("Current size: %d\n", i);
  19. pthread_mutex_unlock(&mutex);
  20. }
  21. void put()
  22. {
  23. pthread_mutex_lock(&mutex);
  24. while( i ==3 ) // 队列上限
  25. pthread_cond_wait(&cond, &mutex);
  26. ++i;
  27. pthread_cond_signal(&cond);// 唤醒其它线程
  28. printf("Now size: %d\n", i);
  29. pthread_mutex_unlock(&mutex);
  30. }
  31. void *thf(void *arg)
  32. {
  33. while(1 )
  34. {
  35. put ();
  36. }
  37. }
  38. int main()
  39. {
  40. pthread_t tid;
  41. pthread_create(&tid,NULL, thf, NULL);
  42. sleep(3);
  43. while(1 )
  44. get ();
  45. }

线程间通讯《代码》pthread_cond_t相关推荐

  1. 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)

    原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...

  2. 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用

    前言: android线程通讯机制是android应用开发的基础课程,对于很多初学android的朋友可能还没有完全理解,所以,今天我就做一下知识小结吧. 一.线程安全 可能有java基本的朋友都知道 ...

  3. 多线程编程之三——线程间通讯

    七.线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而 ...

  4. RT-Thread学习笔记六——线程间通讯(信号量的使用)

    目录 1.概念 1.1  二值型信号量 1.2  计数型信号量 2.信号量的创建(API) 2.1动态信号量创建 2.2动态信号量的删除 2.3静态信号量的创建 2.4静态信号量的删除 3.信号量的获 ...

  5. java线程间通讯的几种方式

    并发编程中,我们可能会遇到这样一个场景 A.B两个线程并行,但是我希望保证B线程在A线程执行完了后再执行 这个时候就需要线程间进行通讯 A执行完了后对B说一声,喂,我执行完了 来康康用Java怎么实现 ...

  6. 线程间通讯机制(提高篇)——深入浅出实现原理

    前言: 这一篇博文主要是和大家讲解一下线程间通讯机制的内部实现原理,即Handler.Message.MessageQueue.Looper.HandlerThread.AsyncTask类的实现以及 ...

  7. java判断线程是否wait_Java并发编程之线程间通讯(上)wait/notify机制

    线程间通信 如果一个线程从头到尾执行完也不和别的线程打交道的话,那就不会有各种安全性问题了.但是协作越来越成为社会发展的大势,一个大任务拆成若干个小任务之后,各个小任务之间可能也需要相互协作最终才能执 ...

  8. NNG/NanoMsg进程线程间通讯库

    NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便. NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版. ...

  9. linux线程及线程间通讯

    目录 一.线程 1.线程接口相关函数 (1)创建线程 (2)结束线程 (3)等待线程 2.线程间通信 (1)同步 (2)互斥 一.线程 每一个进程的地址空间是相互独立的 每一个进程都有一个叫task_ ...

最新文章

  1. 右滑手势导航返回的相关设置
  2. 准备重新回归信息安全产业
  3. wordcloud python3.6能用吗_Python3.6环境下安装wordcloud模块遇到的问题及解决办法
  4. 算法设计与分析 上机题Mergesort
  5. 蓝宝石显卡bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
  6. c语言判断一个已知的二叉树是否是二叉排序树_从ServiceComb学习写好go代码---二叉排序树...
  7. day_05 显示字符A
  8. java读取txt文件---,java读取TXT文件的方法
  9. 超级外链工具:一款超级外链SEO工具源码
  10. python ctype_Python ctype帮助:使用C unsigned char指针
  11. luogu P4238 【模板】多项式乘法逆
  12. 环境资源与相关词汇中英文对照
  13. Python Loess (Lowess) smooth 曲线平滑
  14. explain用法和结果的含义
  15. python基础学习-斐波那契数列实现
  16. python爬虫探索原神世界(角色篇)
  17. css3搜索框呼出键盘,移动端 input 输入框实现自带键盘“搜索“功能并修改X
  18. C++实现的BP神经网络(代码与详解)
  19. 用学号、姓名查询学生信息python
  20. 在chrome下-webkit-box布局的一个bug

热门文章

  1. 解决python读取pickle报错ValueError: unsupported pickle protocol: 5
  2. php 导出excel 2007,使用PHPExcel导出Excel表
  3. 美国伯克利大学计算机研究生学几年,美国加州大学伯克利分校计算机CS研究生申请条件一览...
  4. c++ 线程软件看门狗_装配生产线MES系统软件
  5. java位运算(、|、 ~、、 、 ^)
  6. SQL LIKE 操作符
  7. PhpExcel数组输出到Excel浏览器下载
  8. 大约HR升级版的设计为组汇总
  9. c/s 给 服务器上传文件(c/s和b/s互传文件)
  10. Windows命令行(DOS命令)教程