提供: Japanese Scratch-Wiki

(ページの作成:「{{ひらがなヘッダ}} '''スレッド'''(英: thread)は、Scratchのプログラムを実行する際の最小単位で、多くの場合1スクリプトが1...」)
 
7行目: 7行目:
  
 
== スレッド ==
 
== スレッド ==
スレッドは、各スクリプトを表現している。ただし、[[定義ブロック]]は、呼び出し元のスレッドによる実行となり、定義ブロック用のスレッドによって行われるわけではない。スレッドには以下の状態がある:
+
スレッドは、各スクリプトを表現している。ただし、[[定義 (ブロック)|定義ブロック]]は、呼び出し元のスレッドによる実行となり、定義ブロック用のスレッドによって行われるわけではない。スレッドには以下の状態がある:
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
41行目: 41行目:
 
* フレーム内の2回目以降の実行では、STATUS_RUNNINGであるスレッドが存在する。
 
* フレーム内の2回目以降の実行では、STATUS_RUNNINGであるスレッドが存在する。
 
* [[ターボモード]]であるか、またはステージの再描画が要求されていない。
 
* [[ターボモード]]であるか、またはステージの再描画が要求されていない。
 +
 +
1フレーム内の動作順序は次の通り:
 +
* [[() を止める (ブロック)|強制的に終了させられた]]スレッドを当該フレームの実行対象から外す。
 +
* [[ハットブロック#条件駆動とイベント駆動|条件駆動]]のハットブロックを実行させる。
 +
* [[ステージモニター]]の値の更新を予約する。
 +
* [[タイマー (値)|タイマー]]を更新する。
 +
* スレッドの実行。(ステージモニターの値の計算を含む)
 +
* スクリプトのハイライトを更新する。
 +
* [[緑の旗]]のハイライトを更新する。
 +
* ステージを描画する。
 +
* スプライト情報を更新する。
 +
* ステージモニターを更新する。
 +
 +
== スタックとスタックフレーム ==
 +
スレッドは、スタックの集まりである。1つのスタックは、1つの[[スタックブロック]]や、それに接続できるブロック([[C型ブロック]]やハットブロック、[[キャップブロック]]など)を表している。それぞれのスタックには、「スタックフレーム」というものがあり、そのスタックに関する情報を保管する。たとえば、[[() 回繰り返す (ブロック)|() 回繰り返すブロック]]は、残りの繰り返し回数をスタックフレームに保管している。
  
 
[[カテゴリ:Scratchプログラム]]
 
[[カテゴリ:Scratchプログラム]]
 
[[カテゴリ:開発]]
 
[[カテゴリ:開発]]
 
{{デフォルトソート:しいけんさあとすれつと}}
 
{{デフォルトソート:しいけんさあとすれつと}}

2020年9月7日 (月) 14:47時点における版

このきじは ひらがなのページがありません。ごめんなさい。編集者向け:作成する

スレッド(英: thread)は、Scratchのプログラムを実行する際の最小単位で、多くの場合1スクリプトが1スレッドに対応する。シーケンサー(英: sequencer)は、スレッドの動作を制御する。

Scratchのプログラムは、実際には同時実行しない。以下の順位で実行される:

スレッド

スレッドは、各スクリプトを表現している。ただし、定義ブロックは、呼び出し元のスレッドによる実行となり、定義ブロック用のスレッドによって行われるわけではない。スレッドには以下の状態がある:

定数 説明
STATUS_RUNNING 0 スレッドは実行中。
STATUS_PROMISE_WAIT 1 スレッドは非同期で実行されていて、実行完了を待っている。
STATUS_YIELD 2 スレッドの次の実行まで待つ。
STATUS_YIELD_TICK 3 次のフレームまで待つ。
STATUS_DONE 1 スレッドは実行を終了した。

フレーム

Scratchは、1秒間に30回描画する。(フレーム)そして、シーケンサーは、以下の条件をすべて満たす限り、1フレーム内で可能な限り多くのスレッドを実行する:

  • 実行時間は、1フレームの75%未満(25ミリ秒程度)
  • STATUS_DONEではないスレッドが存在する。
  • フレーム内の2回目以降の実行では、STATUS_RUNNINGであるスレッドが存在する。
  • ターボモードであるか、またはステージの再描画が要求されていない。

1フレーム内の動作順序は次の通り:

  • 強制的に終了させられたスレッドを当該フレームの実行対象から外す。
  • 条件駆動のハットブロックを実行させる。
  • ステージモニターの値の更新を予約する。
  • タイマーを更新する。
  • スレッドの実行。(ステージモニターの値の計算を含む)
  • スクリプトのハイライトを更新する。
  • 緑の旗のハイライトを更新する。
  • ステージを描画する。
  • スプライト情報を更新する。
  • ステージモニターを更新する。

スタックとスタックフレーム

スレッドは、スタックの集まりである。1つのスタックは、1つのスタックブロックや、それに接続できるブロック(C型ブロックやハットブロック、キャップブロックなど)を表している。それぞれのスタックには、「スタックフレーム」というものがあり、そのスタックに関する情報を保管する。たとえば、() 回繰り返すブロックは、残りの繰り返し回数をスタックフレームに保管している。

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。