网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

[Linux线程]线程的同步--使用互斥锁完成线程同步

#include 
#include 
#include 

pthread_mutex_t mutex;    //定义一个互斥量             
int x;                    //定义一个全局变量                                
//这是线程1的入口函数
void threaddeal1(void)                
{
  while(x>0)              //如果X>0
  {
    pthread_mutex_lock(&mutex);        //对互斥量进行加锁操作       
    printf("线程1正在运行: x=%d \n",x); //输出当前的x值
    x--;                                //将x的值-1
    pthread_mutex_unlock(&mutex);       //对互斥两进行开锁操作
    sleep(1);                           //休眠1秒
  }
  pthread_exit(NULL);                   //进程退出
}
//这是线程2的入口函数,线程2和线程1的操作完全相同
void threaddeal2(void) 
{
  while(x>0)
  {
    pthread_mutex_lock(&mutex); 
    printf("线程2正在运行: x=%d \n",x);
    x--;
    pthread_mutex_unlock(&mutex);
    sleep(1);
  }
  pthread_exit(NULL);
}
//这是主函数
int main(int argc,char *argv[])
{
  pthread_t threadid1,threadid2;                        
  int ret;
  ret = pthread_mutex_init(&mutex,NULL);   //初始化互斥锁
  if(ret != 0)
  {
    printf ("初始化互斥锁失败.\n"); 
    exit (1);
  }
  x = 10;     //给全局变量赋初始化值                                
  ret = pthread_create(&threadid1, NULL, (void *)&threaddeal1, NULL);  //创建线程1    
  if(ret != 0)
  {
    printf ("创建线程1失败.\n");
    exit (1);
  }
  ret = pthread_create(&threadid2, NULL, (void *)&threaddeal2, NULL);  //创建线程2   
  if(ret != 0)
  {
    printf ("创建线程2失败.\n");
    exit (1);
  }
  pthread_join(threadid1, NULL); 
  pthread_join(threadid2, NULL);    //阻塞线程1和线程2
  return (0);
}

本文标题:[Linux线程]线程的同步--使用互斥锁完成线程同步
本文地址:http://bjjierui.cn/article/gphphe.html

其他资讯