Threadクラス
提供: AB開発Wiki
ナビゲーションに移動検索に移動The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
クラスの機能
プロパティ
Priority
Priority As ThreadPriority
スレッドの実行優先順位を取得または設定します。ThreadPriority列挙体で列挙される値のいずれかになります。デフォルトはNormalです。
メソッド
コンストラクタ
Sub Thread() Sub Thread(fp As PTHREAD_START_ROUTINE, args As VoidPtr)
パラメータを持たないコンストラクタはThreadクラスを派生させる場合に利用します。
fpに別スレッドで実行するための関数ポインタを、argsにはパラメータを指定します。
Join
Sub Join()
メソッド呼び出し元のスレッドを、対象スレッドが終了するまで待機します。
Resume
Sub Resume()
スレッドのサスペンド カウントを 1 減らします。サスペンド カウントが 0 になるとスレッドは実行に移ります。
Run
Sub Run()
Runメソッドは仮想メソッドです。派生先クラスでこのメソッドをオーバーライドすることで実行されるスレッドモジュールを書き換えることができます。
Start
Sub Start()
スレッドを開始します。
Suspend
Sub Suspend()
スレッドをサスペンド状態(一時中断)にし、サスペンド カウントを 1 増やします。
使用例
ABのThreadクラスを利用したスレッド生成には、「派生先クラスでRunメソッドをオーバーロードする方法」「コンストラクタに関数ポインタを指定する方法」の二通りが存在します。
派生先クラスでRunメソッドをオーバーロードする例
Class SubThread Inherits Thread Public Override Function Run() As Long Print "サブスレッドを実行中。このスレッドは3秒で終了します。" Sleep(3000) End Function End Class 'スレッドオブジェクトを生成し、実行を開始 Dim t As SubThread() t.Start() '待機 t.Join() Print "tスレッドは終了しました。"
コンストラクタに関数ポインタを指定する例
Function TestProc(args As VoidPtr) As Long Print "サブスレッドを実行中。このスレッドは3秒で終了します。" Sleep(3000) End Function 'スレッドオブジェクトを生成し、実行を開始 Dim t As SubThread(AddressOf(TestProc), 0) t.Start() '待機 t.Join() Print "tスレッドは終了しました。"