OS_KillThread*

構文

#include <nitro/os.h>
void OS_KillThread( OSThread* thread, void* arg );
void OS_KillThreadWithPriority( OSThread* thread, void* arg, u32 prio );

引数

なし。

thread 終了させるスレッドへのポインタ
arg スレッドデストラクタに渡される値
prio スレッド優先度

返り値

なし。

説明

指定のスレッドを終了し、次に実行可能なスレッドに切り替えます。

OS_KillThread*() が呼ばれると、OS_SetThreadDestructor() でスレッドデストラクタを予め設定していた場合は、そのデストラクタ関数が呼び出されます。デストラクタ関数は、

typedef void (*OSThreadDestructor)( void* );

で定義される OSThreadDestructor 型の関数です。

thread は終了するスレッドです。arg はデストラクタ関数の第一引数としてデストラクタ関数に渡されます。

thread にカレントスレッドが指定されると OS_ExitThread() を呼ぶことと同様になります。

スレッド thread が mutex をロックしている場合は、それらロックしている全ての mutex をアンロックします。

OS_KillThreadWithPriority() では、終了するスレッドの優先度を prio に変更します。

OS_KillThread*()OS_DestroyThread() との違いは、OS_KillThread*() ではデストラクタ関数が呼び出されますが、OS_DestroyThread() ではデストラクタ関数が呼び出されない、という点です。

OS_KillThread*() は指定のスレッド thread を予告なく突然終了させるという少々危険な関数です。スレッドの動作構造を理解して使用するようにしてください。

参照

OS_InitThread, OS_ExitThread, OS_DestroyThread, OS_SetThreadDestructor

履歴

2005/07/07 初版