Go併發程式設計 模擬併發模型 司機與售票員

2021-10-22 23:54:27 字數 778 閱讀 5434

上題

**實現:

package ossync

import

("fmt")/*

while (true) while (true)

}關門才可以啟動車輛;

停車之後才能開門;

*/var canstart =

make

(chan

bool

)//表示司機程序p1能否啟動汽車

var canopendoor =

make

(chan

bool

)//表示售票員程序p2能否開門

func

driver()

}func

conductor()

}func

bus(

)

控制台輸出:

關門

售票啟動汽車

正常行駛

|行駛2秒|

到站停車

開門 |下車2秒|

關門售票

啟動汽車

正常行駛

|行駛2秒|

到站停車

開門 |下車2秒|

關門售票

啟動汽車

正常行駛

|行駛2秒|

到站停車

開門....

Go 併發程式設計

go語言宣揚用通訊的方式共享資料。go語言以獨特的併發程式設計模型傲視群雄,與併發程式設計關係最緊密的 包就是sync包,意思是同步。同步的用途有兩個,乙個是避免多個執行緒在同一時刻操作同乙個資料塊,另乙個是協調多個執行緒,以避免它們在同一時刻執行同一塊 由於這一的資料庫和 塊的背後都隱含著一種或多...

go併發程式設計

x ch 從ch中接收值並賦值給變數x ch 從ch中接收值,忽略結果關閉 我們通過呼叫內建的close函式來關閉通道。close ch 關於關閉通道需要注意的事情是,只有在通知接收方goroutine所有的資料都傳送完畢的時候才需要關閉通道。通道是可以被垃圾 機制 的,它和關閉檔案是不一樣的,在結...

併發程式設計模型

什麼是併發程式設計模型?併發程式設計模型是一種如何使用併發來有效 高效處理任務的程式設計方式。也就是說如何使用併發。並行工作者模型 流水線模型 並行工作者模型 並行工作者就是多個任務是並行執行的。用於個執行緒用於管理,當有任務來到時,通過某種策略來將任務分發給某乙個worker執行緒。而真正的wor...