std.thread
thread モジュールは、Threadクラスを定義します。Thread はマルチスレッドのアプリケーションを書く上での基礎となります。 各スレッドごとに、Threadクラスの、 スレッド関連付けられたインスタンスをただ一つ持ちます。 Thread クラスを使ってthreadの管理を出来ると言うことは、 ガベージコレクタがスレッドについて完全に把握していると言うことを意味しています。
- alias thread_hdl;
- OSが使用するスレッドハンドルの型です。
Windows では、windows.d の HANDLE と同じです。
- class ThreadError: object.Error;
- エラー時に投げられます
- class Thread;
- 各スレッド毎に一つずつインスタンスが作成されます
- this(size_t stacksize = 0u);
- Threadから派生して main() を上書きしたクラスによって使用されるコンストラクタです。
オプションの stacksize 引数は、デフォルト値の 0 を使用すると、
実行ファイルのデフォルトのスタックサイズでスレッドを作成します - Dave Fladebo
- this(int function(void*) fp, void* arg, size_t stacksize = 0u);
- Threadから派生して run() を上書きしたクラスによって使用されるコンストラクタです。
- this(int delegate() dg, size_t stacksize = 0u);
- Threadから派生して run() を上書きしたクラスによって使用されるコンストラクタです。
- thread_hdl hdl;
- OSによって割り当てられたスレッドハンドルです。
まだ開始していないスレッドの場合、thread_id.init へ設定されています。
- void start();
- 新しくスレッドを作り、実行を開始します。新スレッドは自分自身を初期化し、
次に run() 関数を呼び出します。start() は1回しか呼んではいけません。
- int run();
- スレッドのエントリポイントです。もしオーバーライドされていなければ、
コンストラクタに渡された関数ポインタ fp と引数 arg か、
デリゲート dg を呼び出します。
Returns:
戻り値はスレッドの終了コードで、通常は 0 です。
- void wait();
- スレッドの終了を待ちます。
スレッドが既に終了している場合はすぐにreturnします。
Throws:
スレッドが開始前であるか、もしくは自分自身のスレッドに対して この関数を呼んだ場合は ThreadError を投げます。
- void wait(uint milliseconds);
- スレッドの終了か、
指定したミリ秒の経過の早い方を待ちます。
スレッドが既に終了している場合はすぐにreturnします。
Throws:
スレッドが開始前であるか、もしくは自分自身のスレッドに対して この関数を呼んだ場合は ThreadError を投げます。
- enum TS;
- スレッドの状態
- INITIAL
- スレッドはまだ開始していない
- RUNNING
- スレッドは実行中または一時停止中
- TERMINATED
- スレッドは既に終了している
- FINISHED
- スレッドは終了しクリーンアップ済み
- TS getState();
- スレッドの状態を返します。
- enum PRIORITY;
- スレッドの優先度
- INCREASE
- 優先度を上げる
- DECREASE
- 優先度を下げる
- IDLE
- スレッドに低い優先度を割り当てる
- CRITICAL
- スレッドに高い優先度を割り当てる
- void setPriority(PRIORITY p);
- 優先度を定めます。
Throws:
設定できなかった場合 ThreadError を投げます
- bool isSelf();
- このThreadオブジェクトがカレントスレッドならば true を返します
- static Thread _getThreadById(thread_id id);
- 指定されたIDのスレッドへの参照を返します。
- static Thread _getThis();
- この関数を呼び出した現在のスレッドを表す
Threadクラスのインスタンスへの参照を返します。
- static Thread[] getAll();
- 現在走っているスレッド全てを取得します。
- void pause();
- スレッドの実行を停止します。
- void resume();
- スレッドの実行を再開します。
- static void pauseAll();
- 現在のスレッドを除く全てのスレッドを停止させます。
- static void resumeAll();
- 停止してるスレッド全てを再開させます。
- static void yield();
- 現在のスレッドの残りのタイムスライスを他へ譲ります。
- static size_t nthreads;
- static void thread_init();
- グローバルの main() 用のThreadオブジェクトを作成します。
- static void thread_attach();
- 現在のスレッドにattach
- static void thread_detach();
- 現在のスレッドからdetach
- void* os_query_stackBottom();
- スタックの "底" を返します (Win32では実際には"top"ですが...)。