2 3

分享

【Scratch 教學】分身編號 3 -Scratch分身與執行緒

前一篇介紹了  Scratch 的分身與執行緒之間的關係,但又留下了一個問題,如果一個程式積木串中有重複迴圈,那麼這個執行緒也會等到迴圈結束才換下一個執行緒執行嗎?本篇繼續探討 Scratch 專家 Cliff Davies 的 "Scratch and its inner workings" 文章的內容。 
延續前一篇的程式,並加上『重複 5 次』,如下:
Scratch Scratch教學 傑夫老師

延續上一篇的程式,並加上『重複 5 次』

執行結果如下:清單『Global list』中的數字,不像前一篇最後預期的都是 5,而是 2, 3, 4, 5, 6,就如第一篇的「分身數量」方式建立分身編號的結果吻合。
Scratch Scratch教學 傑夫老師

清單『Global list』中的數字,不像前一篇最後預期的都是 5

如果不是等到『重複 5 次』再執行『當分身產生』,那麼合理的"解釋"就是每次迴圈內的程式積木被執行完要返回時暫停了下來,讓『當分身產生』先執行。沒錯,正在執行的執行緒必須在某些時機點暫停,讓列表中下一個執行緒能執行,這樣才是所謂的「多工」或是一開始所說的感覺像是程式在「同步執行」。而執行緒暫停下來給下一個執行的時機,專家 Cliff 稱之為「讓點 (yield point)」。
抱歉,實在沒有更好的中文翻譯可以描述這個 yield point,歡迎英文好的朋友留言建議。
所以,每一次『變數 local 改變 1』執行完畢時,因為在這個迴圈內有一個『建立自己的分身』,所以列表中有了一個等著要被執行的執行緒,這個執行緒就暫停了下來,讓給了新的執行緒執行,也就是『當分身產生』下的程式。迴圈一次又一次的執行,執行了 5 次,每次都會讓給新的執行緒執行,最後有了我們看到的"合理的"結果。
這也說明了,按照第一篇的「分身數量」方式建立分身編號,『分身數量』的初始值要從 0 開始。

知道了這個「讓點」又對創作 Scratch 遊戲有什麼幫助?傑夫老師會慢慢的告訴你。Bye now~
後來發現,翻譯文章不如融會貫通了之後再用自己的方式描述出來。英文好的朋友去看看原文。傑夫老師本著教學初衷,先利用一個簡單或常見的問題,來引出文章中的重點,希望大家能夠更容易懂。
#Scratch  #Scratch教學  #傑夫老師 
分類:學習

傑夫(Jeff)老師喜歡研究積木型(block)程式,如:Scratch, App Inventor, micor:bit,除了有一般中小學生的課程,也不定期的會開設Scratch師資培訓班,並且是「Scratch的100個技巧」的共同作者。

評論
上一篇
  • 【Scratch 教學】分身編號 2 -Scratch分身與執行緒
  • 下一篇
  • 【Scratch 教學】分身管理 1 - Scratch老師就要會管
  • 更多文章
    載入中... 沒有更多了