当前位置:  技术问答>linux和unix

求教,用互斥量进行同步。。。

    来源: 互联网  发布时间:2016-09-26

    本文导语:  #include  #include  #include  #include  #include  #include  void *thread_function(void *arg); pthread_mutex_t work_mutex;   //包含线程库 #define WORK_SIZE  1024 char work_area[WORK_SIZE];    //公用的空间 int time_to_exit = 1;      //用于控制...

#include 
#include 
#include 
#include 
#include 
#include 

void *thread_function(void *arg);
pthread_mutex_t work_mutex;   //包含线程库
#define WORK_SIZE  1024
char work_area[WORK_SIZE];    //公用的空间
int time_to_exit = 1;      //用于控制循环

int main()
{
  int res;
  pthread_t a_thread;      //保存创建线程的返回值  
  void *thread_result;      //接收线程结束的返回值
  //创建并初始化互斥量 
  res = pthread_mutex_init(&work_mutex,NULL);
  // 判断互斥量创建是否成功
  if (res != 0) {
    perror("初始化互斥量失败");
    exit(EXIT_FAILURE);
  }
  //创建线程
  res = pthread_create(&a_thread,NULL,thread_function,NULL);
  //判断线程创建是否成功
   if (res != 0) {
    perror("线程创建失败");
    exit(EXIT_FAILURE);
  }
  //锁定互斥量
  pthread_mutex_lock(&work_mutex);
  printf("请输入要传送的信息,输入'end'退出n");
  //判断循环标志状态
  while (time_to_exit) {
    fgets(work_area,WORK_SIZE,stdin);   //接收输入信息
    pthread_mutex_unlock(&work_mutex);  //解锁
    while ( 1 ){
      pthread_mutex_lock(&work_mutex);   //锁定互斥量
      if (work_area[0] != '') {
pthread_mutex_unlock(&work_mutex);  //解锁
sleep(1);     
      }
      else{
break;
      }
    }
  }
  pthread_mutex_unlock(&work_mutex);  //解锁
  printf("n等待线程结束...n");
  res = pthread_join(a_thread,&thread_result);  //等待线程结束
  //判断结束线程是否有错误
  if ( res != 0) {
    perror("线程结束失败");
    exit(EXIT_FAILURE);
  }
  printf("线程结束");
  pthread_mutex_destory(&work_mutex);   //清除互斥量
  exit(EXIT_SUCCESS);
}

void *thread_function(void *arg)
{
  sleep(1);
  pthread_mutex_lock(&work_mutex);   //锁定信号量
  while (strncmp("end",work_area,3) != 0) {  //判断信息是否是end
    printf("收到%d个字符n",strlen(work_area) - 1);
    work_area[0] = '';   //将公共空间清除
    pthread_mutex_unlock(&work_mutex);   
    sleep(1);
    pthread_mutex_lock(&work_mutex);
    while (work_area[0] == '、0') {  //判断公共空间是否为空
      pthread_mutex_unlock(&work_mutex);
      sleep(1);
      pthread_mutex_lock(&work_mutex);
    }
  }
  time_to_exit = 0;     //置循环标志为0
  work_area[0] = '、0';   //清空公共空间
  pthread_mutex_unlock(&work_mutex);
  pthread_exit(0);
}



出现undefined reference to pthread_mutex_destory;

|
写错了,应该是pthread_mutex_destroy

|
你的链接选项是什么,有加-lphtread吗?

|


你自己看你的destroy是怎么写的.

|
有出现   undefined reference to pthread_mutex_destory;

这种错误提示的时候,自己检查下代码,结合man ,不就找到答案了,


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3