技術員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

Linux多線程編程

來源:技術員聯(lián)盟┆發(fā)布時間:2018-07-16 18:19┆點擊:

  #define MAX 10

  pthread_t thread[2];

  pthread_mutex_t mut;

  int number=0, i;

  void *thread1()

  {

  printf ("thread1 : I'm thread 1n");

  for (i = 0; i < MAX; i++)

  {

  printf("thread1 : number = %dn",number);

  pthread_mutex_lock(&mut);

  number++;

  pthread_mutex_unlock(&mut);

  sleep(2);

  }

  printf("thread1 :主函數(shù)在等我完成任務嗎?n");

  pthread_exit(NULL);

  }

  void *thread2()

  {

  printf("thread2 : I'm thread 2n");

  for (i = 0; i < MAX; i++)

  {

  printf("thread2 : number = %dn",number);

  pthread_mutex_lock(&mut);

  number++;

  pthread_mutex_unlock(&mut);

  sleep(3);

  }

  printf("thread2 :主函數(shù)在等我完成任務嗎?n");

  pthread_exit(NULL);

  }

  void thread_create(void)

  {

  int temp;

  memset(&thread, 0, sizeof(thread)); //comment1

  /*創(chuàng)建線程*/

  if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0) //comment2

  printf("線程1創(chuàng)建失敗!n");

  else

  printf("線程1被創(chuàng)建n");

  if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0) //comment3

  printf("線程2創(chuàng)建失敗");

  else

  printf("線程2被創(chuàng)建n");

  }

  void thread_wait(void)

  {

  /*等待線程結(jié)束*/

  if(thread[0] !=0) { //comment4

  pthread_join(thread[0],NULL);

  printf("線程1已經(jīng)結(jié)束n");

  }

  if(thread[1] !=0) { //comment5

  pthread_join(thread[1],NULL);

  printf("線程2已經(jīng)結(jié)束n");

  }

  }

  int main()

  {

  /*用默認屬性初始化互斥鎖*/

  pthread_mutex_init(&mut,NULL);

  printf("我是主函數(shù)哦,我正在創(chuàng)建線程,呵呵n");

  thread_create();

  printf("我是主函數(shù)哦,我正在等待線程完成任務阿,呵呵n");

  thread_wait();