分享

【Scratch 教學】等待 0 秒? 2 - Scratch 執行緒深入研究

Scratch Scratch教學 傑夫老師

Photo by James Coleman on Unsplash

前篇說明了『等待 0 秒』是會讓程式稍微停下來的,而在前面的單元提到了「讓點 (yield point)」,這兩者有什麼關係?這一篇就來深入研究。這篇內容主要翻譯自 Scratch 專家 Cliff Davies 的 "Scratch and its inner workings"  
前面的單元提到了 Scratch 執行緒的「讓點 (yield point)」,意思是一段程式積木串的執行緒 (thread) 遇到了讓點就會暫停下來,讓給執行緒列表 中的下一個執行緒執行。這樣的過程,會使得列表中所有的執行緒都被執行到,而當列表中最後一個執行緒被執行到讓點或執行完畢時,會再回到列表中的第一個執行緒繼續執行下去,一直輪迴,直到所有執行緒都被執行完畢列表清空了為止。
那麼就來瞭解一下,哪些時機是「讓點」:
  • 任何『重複迴圈(重複無限、重複OO次、重複直到)』的最後一個積木執行之後
  • 執行完『廣播並等待』之後
  • 執行到『等待OO秒』積木且秒數還沒到達時
  • 每次遇到『等待直到』中的判斷式為否 (false) 時
  • 執行到『停止全部』時
第一個『重複迴圈』已經在前面的單元說明過;最後一個『停止全部』就是要結束了非常合理;其他三個時機都與各式的『等待』有關,等待的期間讓給其他的執行緒執行,其實一點也不難理解。
所以,正如前篇的實驗,『等待 0 秒』是因為執行緒遇到了讓點,Scratch 必須暫停執行緒去檢查列表並試圖轉換執行緒,但做這些事情需要一點時間,並不會毫不等待。而且,依照實驗結果『等待 0 秒』平均消耗了 0.033 秒的時間。
但為什麼是 0.033 秒?待傑夫老師下篇再說明。Bye now~

#Scratch  #Scratch教學  #傑夫老師 
分類:學習

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

評論
上一篇
  • 【Scratch 教學】等待 0 秒? 1 - Scratch 執行緒深入研究
  • 下一篇
  • 【Scratch 教學】等待 0 秒? 3 - Scratch 執行緒深入研究
  • 更多文章
    載入中... 沒有更多了