スケジューラー
実際には
1.イベントをチェック(マウス, キーボード, ...)
➡ 適切な4Dプロセスに伝達する
2.その後,アクティブプロセスに1 tickずつのループに突入
For 1からプロセス数まで
If プロセスが遅延あるいは停止されていなければ
そのコードを 1 tick 実行する(16 ms)
Tokyo/2010-03-03/04
172.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
173.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
For 1からプロセス数まで
// それぞれの4Dプロセスに時間を与える
For 4D If プロセスが遅延あるいは停止されていなければ
プロセスそれぞれにつき
Give そのコードを 1 tick 実行する(16 ms)
最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
174.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
175.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
176.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
177.
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係DATABASE PARAMETER
SET
Pass イベントをプロセスに伝達
4D Server Scheduler
End if 4D Remote Scheduler
End if
Until イベントがない 4D Local Mode Scheduler
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
スケジューラー
While 4D 実行中
// システムイベントを処理
Repeat
If チェック_間隔 が経過した
If 4Dはビジーである
タイムアウト = タイムアウト_最短
Else
タイムアウト = タイムアウト_最長
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
181.
スケジューラー: 4Dを最高に
While 4D実行中
// システムイベントを処理
Repeat
If 5 ticks が経過した
If 4Dはビジーである
タイムアウト = 0 tick
Else
タイムアウト = 1 ticks
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
182.
スケジューラー: 4Dを標準に
While 4D実行中
// システムイベントを処理
Repeat
If 0 ticks が経過した
If 4Dはビジーである
タイムアウト = 0 tick
Else
タイムアウト = 8 ticks
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
183.
スケジューラー: 4Dを最低に
While 4D実行中
// システムイベントを処理
Repeat
If 0 ticks が経過した
If 4Dはビジーである
タイムアウト = 1 tick
Else
タイムアウト = 16 ticks
End if
// ここでシステムに制御を返す
Get イベントあるいは タイムアウト まで待機
If イベントは4Dプロセスに関係
Pass イベントをプロセスに伝達
End if
End if
Until イベントがない
// それぞれの4Dプロセスに時間を与える
For 4D プロセスそれぞれにつき
Give 最低 1 tick アクティブプロセスを実行
End while
Tokyo/2010-03-03/04
184.
スケジューラー
チューニング
• SET DATABASE PARAMETER(スコープ;値)
Tokyo/2010-03-03/04
185.
スケジューラー
チューニング
• SET DATABASE PARAMETER(スコープ;値)
‣ スコー プ:
- 4D Server スケジューラー
- 4D Remote スケジューラー
- 4D Local Mode スケジューラー
Tokyo/2010-03-03/04