[前へ] [目次へ] [次へ]

SaveLockObject (script/fgs/system.fges)


このクラスはセーブロックを制御するためのクラスです。
このクラスのインスタンスが存在する間、セーブシーンの呼び出しが待機されます。
セーブが実行されては困る処理が実行されている間、セーブシーンを呼び出せないようにするために使用します。

セーブロックはこのクラスのインスタンスを生成することでロックされ、
生成されたインスタンスを消滅させることで解放されます。

この実装にはデッドロックに対する保護がありません。
デッドロックを引き起こさないように注意してください。

セーブロックはこのクラスのインスタンスを生成したスレッド単位で管理されます。
セーブロックを行っているスレッドがセーブシーンの呼び出しを行った場合は例外が発生します。
セーブシーンの呼び出しが待機されている状態でこのクラスのインスタンスが生成された場合、
既にセーブロックを行っているスレッドだった場合はそのまま続行され、
セーブロックをしていないスレッドだった場合、セーブシーンの完了まで待機されます。


●継承/注入

   このクラスは継承/注入をしていません。

●インターフェイスとインターフェイスメソッド

   このクラスはインターフェイスの実装宣言をしていません。

●クラスメソッド

名前概要
public操作メソッド SyncCallScene同期付きシーン呼び出しを実行します。

●クラスメンバメソッド

   このクラスはクラスメンバメソッドを持っていません。

●クラス共有変数

名前概要
readable save_waitingセーブシーンの呼び出し待機中フラグ
internal savelock_csセーブロック処理用同期オブジェクト
internal synccall_csセーブシーン呼び出し用同期オブジェクト
internal locking_threadsセーブロック中スレッドリスト

●インスタンス変数

   このクラスはインスタンス変数を持っていません。




SaveLockObject::SyncCallScene

public static void SyncCallScene(editable INativeScene call_scene)

   セーブロックの解放を同期した上で指定したシーンを呼び出します。
   セーブロックを実行しているスレッドからこのメソッドを呼び出した場合、例外が発生します。
   
   指定するシーンオブジェクトはローカル変数か、メモリ管理オブジェクトに直接接続されている必要があり、
   このメソッドは指定されたシーンオブジェクトのメモリ管理をネイティブ管理に変更します。
   指定されたシーンオブジェクトの寿命はシーンの終了までになります。
   このメソッドを呼び出したゲームスレッドはシーンが終了するまで停止されるため、
   実行が再開された時点で既に指定したシーンオブジェクトは消滅しています。
   
   このメソッドはシーン遷移待機中の場合には使用できません。

editable INativeScene call_scene :呼び出すシーンオブジェクト。

先頭へ


SaveLockObject::save_waiting

readable Bool save_waiting

   セーブシーンの呼び出しを待機している間、真になるフラグ。

先頭へ


SaveLockObject::savelock_cs

internal CriticalSection savelock_cs

   セーブロック処理を行う際に使用するクリティカルセクション。

先頭へ


SaveLockObject::synccall_cs

internal CriticalSection synccall_cs

   セーブシーン呼び出し処理を行う際に使用するクリティカルセクション。

先頭へ


SaveLockObject::locking_threads

internal Array<HThread> locking_threads

   セーブロックを行っているスレッドのリスト。

先頭へ


[前へ] [目次へ] [次へ]

最終更新 2023/02/01