# 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 初版