您好,登錄后才能下訂單哦!
#include <stdio.h> #include <stdlib.h> #include <pthread.h> 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); }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。