過橋問題動畫顯示(多執行緒,簡陋版)

2021-05-25 23:26:42 字數 2228 閱讀 9670

code:

#include

#include

#include

void gotoxy(int x,int y)     

/*四個訊號量,東,西方向訊號量,東,西段互斥訊號量,用訊號量控制過橋的物件,同時過橋的物件僅且

只有兩個,並且不能同向,多個執行緒用同乙個執行緒入口函式*/

handle he_dir;  //從西往東訊號量

handle hw_dir; //從西往東訊號量 

handle he_mutex; //西段執行緒間的互斥

handle hw_mutex;  //東段執行緒互斥

dword winapi etow1_proc(lpvoid lpparameter);//東到西邊執行緒

dword winapi wtoe1_proc(lpvoid lpparameter);//西到東邊執行緒

void bridge();  //建立過橋函式

int i;   

int j;   

int time1=100,time2=300;   

bool e_release;   

bool w_release;   

int main()   

//西到東邊執行緒

dword winapi wtoe1_proc(lpvoid lpparameter)   

w_release = releasemutex(he_mutex); //離開西段

if(w_release)/*判斷誰先到,先到等1秒鐘*/ sleep(1000);   //到中間區域休息,等待另一方到來

gotoxy(i,12);   

printf(" ");   

gotoxy(34,11);   

printf("☆");   

sleep(100);   

gotoxy(34,11);   

printf("");   

gotoxy(35,11);   

printf("☆");   

sleep(100);   

gotoxy(35,11);   

printf(" ");   

waitforsingleobject(hw_mutex,infinite);    //進入東段,互斥

for(i=35;i<=56;i++)   

gotoxy(i,12);   

printf(" ");   

releasemutex(hw_mutex);     //解開東段互斥

//releasemutex(he_mutex);

}   

//  return 0;

}   

//東到西邊執行緒

dword winapi etow1_proc(lpvoid lpparameter)   

e_release = releasemutex(hw_mutex);   //離開東段,

if(e_release) sleep(1000);   

gotoxy(j+1,12);   

printf(" ");   

gotoxy(36,13);   

printf("★");   

sleep(100);   

gotoxy(36,13);   

printf("");   

gotoxy(35,13);   

printf("★");   

sleep(100);   

gotoxy(35,13);   

printf(" ");   

gotoxy(34,13);   

printf("★");   

sleep(100);   

gotoxy(34,13);   

printf(" ");   

waitforsingleobject(he_mutex,infinite);//進入西段,互斥

for(j=32;j>=12;j--)   

gotoxy(j+1,12);   

printf(" ");   

releasemutex(he_mutex);//離開西段段

}   

return 0;   

}   

void bridge()      

Java多執行緒題(過橋)

有乙個南北向的橋,只能容納乙個人,現橋的兩邊分別有10人和12人,編制乙個多線程式讓這些人到達對岸,每個人用乙個執行緒表示,橋為共享資源。在過橋的過程中顯示誰在過橋及其走向。package org public class through out bridge 例項化右端12個人,此時所有人都不能過...

多執行緒問題

問題描述 有4個執行緒和1個公共的字元陣列。執行緒1的功能就是向陣列輸出a,執行緒2的功能就是向字元輸出b,執行緒3的功能就是向陣列輸出c,執行緒4的功能就是向陣列輸出d。要求按順序向陣列賦值abcdabcdabcd,abcd的個數由執行緒函式1的引數指定。注 c語言選手可使用windows sdk...

多執行緒問題

程式 是由多個程序組成的。可以理解為靜態的 程序 可以理解為執行中的程式。執行緒 是組成程序的單元,乙個程序中有多個執行緒。我們經常把執行緒看做是程序中的某乙個任務。方式一 繼承乙個thread類 方式二 實現乙個runnable介面 兩種方式相比較,哪個能好點那?一般建議是實現runnable介面...