下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

实例干货:linux系统中的C语言多线程编程代码

作者:课课家教育     来源: http://www.kokojia.com点击数:1315发布时间: 2016-02-22 11:36:55

标签: Linux多线程linux系统Linux


  这篇文章主要介绍了Linux系统中的c多线程编程实例,大家可以参考使用以下代码,或者是直接进行练习修改,下面直接放出代码,由于代码里都有注释,故不再赘述。

实例干货:linux系统中的C语言多线程编程代码_Linux多线程_linux系统_Linux_课课家


  #include

  #include

  #include

  #include

  #include

  #define MAX 3

  int number =0;

  pthread_t id[2];

  pthread_mutex_t mut; //初始化静态互斥锁

  void thread1(void)

  {

  int i;

  printf("Hello,I am pthread1!\\n");

  for (i=0; i

  {

  pthread_mutex_lock(&mut); //此处上锁,保证number的唯一性

  number ++;

  printf("Thread1:number = %d\\n",number);

  pthread_mutex_unlock(&mut);

  sleep(1); //linux c下 sleep(minute),里面变量单位是分钟

  }

  pthread_exit(NULL); //线程通过执行此函数,终止执行。返回是一个空指针类型

  }

  void thread2(void)

  {

  int j;

  printf("Hello,I'm pthread2\\n");

  for(j=0; j

  {

  pthread_mutex_lock(&mut);

  number ++;

  printf("Thread2:number = %d\\n",number);

  pthread_mutex_unlock(&mut);

  sleep(1);

  }

  pthread_exit(NULL);

  }

  void thread_create(void)

  {

  int temp;

  memset(&id, 0, sizeof(id));

  if(temp = pthread_create(&id[0], NULL, (void *)thread1, NULL)!= 0)

  //参数:线程标识符指针 线程属性 线程运行函数起始地址 运行函数属性

  //创建成功返回 0

  printf("Thread 1 fail to create!\\n");

  else

  printf("Thread 1 created\\n");

  if(temp = pthread_create(&id[1], NULL, (void *)thread2, NULL)!= 0)

  printf("Thread 2 fail to create!\\n");

  else

  printf("Thread 2 created!\\n");

  }

  void thread_wait()

  {

  if(id[0] != 0)

  {

  pthread_join(id[0], NULL); //等待线程结束,使用此函数对创建的线程资源回收

  printf("Thread1 completed!\\n");

  }

  if(id[1] != 0)

  {

  pthread_join(id[1], NULL);

  printf("Thread2 completed!\\n");

  }

  }

  int main(void)

  {

  int i,ret1,ret2;

  pthread_mutex_init(&mut, NULL); //动态互斥锁

  printf("Main fuction,creating thread...\\n");

  thread_create();

  printf("Main fuction, waiting for the pthread end!\\n");

  thread_wait();

  return (0);

  }

赞(25)
踩(4)
分享到:
华为认证网络工程师 HCIE直播课视频教程