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スレッドは終了しました。"