Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631582
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:15:21

原文地址:线程同步——信号量 作者:luozhiyong131

  1. /*
  2.  * 线程同步——信号量
  3.  * 主线程从键盘读入字符,新线程输出读入的字符
  4.  * Lzy 2011-6-19
  5.  */

  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <pthread.h>
  9. #include <semaphore.h>                //信号量头文件
  10. #include <string.h>

  11. sem_t sem;                            //定义信号量
  12. char buf[256];

  13. void *mypthread(void *arg)            //新线程运行函数
  14. {
  15.     sem_wait(&sem);                    //阻塞当前线程
  16.     while(strncmp(buf, "exit", 4) != 0)
  17.     {
  18.         printf("接收字符:");
  19.         puts(buf);
  20.         sem_wait(&sem);                //阻塞当前线程
  21.     }
  22.     pthread_exit(NULL);                //线程退出
  23. }

  24. int main(void)
  25. {
  26.     pthread_t tid;                        //定义线程标识符
  27.     sem_init(&sem, 0,0);                //信号量初始化    
  28.     pthread_create(&tid, NULL, mypthread, NULL);    //创建新线程    
  29.     
  30.     while(strncmp(buf, "exit", 4) != 0)
  31.     {
  32.         printf("输入字符:");
  33.         gets(buf);
  34.         sem_post(&sem);            //激活阻塞在信号量上的线程
  35.     }

  36.     pthread_exit(NULL);            //等待线程结束
  37.     sem_destroy($sem);            //注销信号量
  38.     
  39.     return 0;
  40. }
阅读(122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~