老師的代碼有錯誤的地方
func A() {
...
go func(task []int, i int) {
...
}(task, i) // i 需要從外部傳進去
}
func B 和 func C 中 break 無法跳出循環(huán),可以使用 goto 或者 標記flag 跳出外層 for 循環(huán)
func A() {
...
go func(task []int, i int) {
...
}(task, i) // i 需要從外部傳進去
}
func B 和 func C 中 break 無法跳出循環(huán),可以使用 goto 或者 標記flag 跳出外層 for 循環(huán)
2020-08-08
@我魔我能,同學,你還是往后看一下第三章的內(nèi)容。。。。。人家舉的例子是一個籠蒸10個包子代表一個協(xié)程處理一個任務(wù)。。。。。10個包子=1個任務(wù),不是10個任務(wù)。。。。你理解錯了
2020-07-10
舉例不當,一個包子出籠需要,做包子,包子放入蒸籠,出籠給客戶,這三步才能完成。這時來個客戶要買10個包子,單協(xié)程是這樣做的:做1包子1分鐘,把1個包子放入蒸籠,蒸10分鐘,出籠給客戶,然后繼續(xù)做第二個,第三個,這樣客戶就要等待110分鐘。而多協(xié)程是這樣的:把做包子比做一個任務(wù),那現(xiàn)在有10個任務(wù),第一個任務(wù)開始:做1包子,把1個包子放入蒸籠,等待蒸好,這時第一個任務(wù)陷入等待,廚師可以去做第二個任務(wù),做第2個包子,把第二個包子放入蒸籠,等待第二個蒸好,好第二個任務(wù)又陷入等待了。廚師開始做第3個任務(wù),。。。這樣客戶的等待時間就是蒸一個包子的時間+做10個包子的時間——1*10+10=20分鐘
2020-07-09
課程的PPT的還做的不錯,至于講的嘛,就~。如果你只是來學一下go語言的協(xié)程語法,那么你會有收獲;如果你初學者想了解一下go協(xié)程,那么很有可能會誤導(dǎo)你。
課程中例子選的不錯,但講法錯了。單協(xié)程就是一個籠子每次蒸1個包子,多協(xié)程就是1個籠子一次蒸10個???協(xié)程序是提供了程序的并發(fā)能力,不是并行能力!協(xié)程本質(zhì)是讓程序員用同步、阻塞的編碼,利用go的協(xié)程調(diào)度,提高cpu利用率,實現(xiàn)一個高并發(fā)服務(wù)。
課程中例子選的不錯,但講法錯了。單協(xié)程就是一個籠子每次蒸1個包子,多協(xié)程就是1個籠子一次蒸10個???協(xié)程序是提供了程序的并發(fā)能力,不是并行能力!協(xié)程本質(zhì)是讓程序員用同步、阻塞的編碼,利用go的協(xié)程調(diào)度,提高cpu利用率,實現(xiàn)一個高并發(fā)服務(wù)。
2020-07-09