日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统上机题目(多线程2)

發(fā)布時間:2023/12/1 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统上机题目(多线程2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 主線程創(chuàng)建4個子線程T1、T2、T3、T4,
  • 主線程在4個子線程退出后,才退出
  • 線程T1、T2、T3、T4的運行時代碼如下:
#include <unistd.h> // sleep函數(shù)聲明在該頭文件中void *T1_entry(void *arg) {sleep(2); // 睡眠2秒,不準刪除此條語句,否則答題無效puts(“T1”); }void *T2_entry(void *arg) {sleep(1); // 睡眠1秒,不準刪除此條語句,否則答題無效puts(“T2”); }void *T3_entry(void *arg) {sleep(1); // 睡眠1秒,不準刪除此條語句,否則答題無效puts(“T3”); }void *T4_entry(void *arg) {puts(“T4”); }
  • 使用信號量或者條件變量機制(而不是使用sleep函數(shù)),使得這四個線程滿足如下制約關(guān)系:
    • T1的print語句執(zhí)行后,T2和T3才可以執(zhí)行print語句
    • T2和T3的print語句執(zhí)行后,T4才可以執(zhí)行print語句
  • 程序輸出結(jié)果為
T1 T2 T3 T4

或者

T1 T3 T2 T4

code:

#include<stdlib.h> #include<stdio.h> #include<string.h> #include<unistd.h> #include<pthread.h>int count=0;pthread_mutex_t mutex; pthread_cond_t wait1; pthread_cond_t wait2; pthread_cond_t wait3;void *T1_entry(void *arg){int *p=arg;pthread_mutex_lock(&mutex);while(count!=(*p))pthread_cond_wait(&wait1,&mutex);sleep(2);puts("T1");count++;pthread_cond_broadcast(&wait2);pthread_mutex_unlock(&mutex); }void *T2_entry(void *arg){int *p=arg;pthread_mutex_lock(&mutex);while(count<1||count>2)pthread_cond_wait(&wait2,&mutex);sleep(1);puts("T2");count++;pthread_cond_signal(&wait3);pthread_mutex_unlock(&mutex); }void *T3_entry(void *arg){int *p=arg;pthread_mutex_lock(&mutex);while(count<1||count>2)pthread_cond_wait(&wait2,&mutex);sleep(1);puts("T3");count++;pthread_cond_signal(&wait3);pthread_mutex_unlock(&mutex); }void *T4_entry(void *arg){int *p=arg;pthread_mutex_lock(&mutex);while(count!=(*p))pthread_cond_wait(&wait3,&mutex);puts("T4");pthread_mutex_unlock(&mutex); }int main(){pthread_t pid[4];int j[4];int i;pthread_mutex_init(&mutex,NULL);pthread_cond_init(&wait1,NULL);pthread_cond_init(&wait2,NULL);pthread_cond_init(&wait3,NULL);for(i=0;i<4;i++){j[i]=i;if(i==0)pthread_create(&pid[i],NULL,T1_entry,(void*)&j[i]);if(i==1)pthread_create(&pid[i],NULL,T2_entry,(void*)&j[i]);if(i==2)pthread_create(&pid[i],NULL,T3_entry,(void*)&j[i]);if(i==3)pthread_create(&pid[i],NULL,T4_entry,(void*)&j[i]);}pthread_join(pid[3],NULL);return 0; }

總結(jié)

以上是生活随笔為你收集整理的操作系统上机题目(多线程2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。