spBase APIリファレンス

スレッド

マルチスレッドのための関数です.環境によって動作が異なることがありますので注意して下さい.

spCreateThread

目的
新たなスレッドを作成します.

書式
#include <sp/spThread.h> void *spCreateThread(long stacksize, int priority, spThreadFunc func, void *data);

引数
stacksize
作成されるスレッドが持つスタックのサイズをバイト数で指定します. 0を指定したときはデフォルトのスタックサイズとなります.この値は環境によって異なります.
priority
スレッドの優先順位を指定します.優先順位が高い方から, SP_THREAD_PRIORITY_TIME_CRITICAL, SP_THREAD_PRIORITY_HIGHEST, SP_THREAD_PRIORITY_ABOVE_NORMAL, SP_THREAD_PRIORITY_NORMAL(=0), SP_THREAD_PRIORITY_BELOW_NORMAL SP_THREAD_PRIORITY_LOWEST, SP_THREAD_PRIORITY_IDLEが指定できます.環境によってはこの値は無視されます.
func
スレッド関数のアドレスを指定します. スレッド関数は,spThreadReturn func(void *data);の形式で定義する必要があります. また,スレッド関数の終了コードとして, SP_THREAD_RETURN_SUCCESS(正常終了)とSP_THREAD_RETURN_FAILURE(異常終了)が用意されています. スレッド関数の終了コードはspWaitThreadの戻り値として得られます.
data
新しいスレッドに渡す引数を指定します.スレッド関数で引数を使用しない場合はNULLでも構いません.

戻り値
スレッドハンドルが返ります.スレッドの作成に失敗した場合はNULLが返ります.

説明
この関数により作成されたスレッドが使用されなくなったら,spDestroyThreadを呼んで下さい.

関連項目
spDestroyThread, spExitThread

spDestroyThread

目的
スレッドハンドルを閉じます.

書式
#include <sp/spThread.h> void spDestroyThread(void *handle);

引数
handle
spCreateThreadにより得られたスレッドハンドルを指定します.

説明
spCreateThreadで作成したスレッドを使用しなくなったときに呼んで下さい.

関連項目
spCreateThread

spExitThread

目的
現在のスレッドを終了させます.

書式
#include <sp/spThread.h> void spExitThread(long status);

引数
status
終了コードを指定します. この終了コードはspWaitThreadの戻り値として得られます.

説明
spCreateThreadにより作成されたスレッド以外の関数でこの関数を呼んだ場合の動作は不定です.

関連項目
spCreateThread

spYieldThread

目的
現在のスレッドの実行権を別のスレッドに渡します. スレッドの実行権が一つだけの環境で有効です.

書式
#include <sp/spThread.h> void spYieldThread(void);

説明
いくつかの環境ではスレッドの実行権は一つしかないため, 長い計算を行う場合には,特定のスレッドが実行権を持ち続けてしまい,他のスレッドは処理が行われません. そのため,必要に応じてこの関数を途中で呼び出して下さい.

spWaitThread

目的
スレッドの終了を待ちます.

書式
#include <sp/spThread.h> long spWaitThread(void *handle);

引数
handle
spCreateThreadにより得られたスレッドハンドルを指定します.

戻り値
スレッド関数の終了コードが返ります.スレッドが終了するまでこの関数から戻りません.

関連項目
spCreateThread

spCreateMutex

目的
ミューテックスオブジェクトを作成します.

書式
#include <sp/spThread.h> void *spCreateMutex(char *name);

引数
name
ミューテックスオブジェクトの名前を指定します.

戻り値
オブジェクトのハンドルが返ります.オブジェクトの作成に失敗した場合はNULLが返ります.

説明
この関数を呼んだだけでは所有権は獲得されません. 所有権を得るには,spLockMutexを呼びます. なお,環境によっては,名前が無視され,名前なしのオブジェクトが作られます.

関連項目
spDestroyMutex, spLockMutex

spDestroyMutex

目的
ミューテックスオブジェクトを破棄します.

書式
#include <sp/spThread.h> void spDestroyMutex(void *handle);

引数
handle
spCreateMutexにより得られたスレッドハンドルを指定します.

説明
spCreateMutexで作成したオブジェクトを使用しなくなったときに呼んで下さい.

関連項目
spCreateMutex

spLockMutex

目的
ミューテックスオブジェクトの所有権を獲得します.

書式
#include <sp/spThread.h> spBool spLockMutex(void *handle);

引数
handle
spCreateMutexにより得られたスレッドハンドルを指定します.

戻り値
所有権の獲得に成功するとSP_TRUE,失敗するとSP_FALSEを返します.

説明
環境によっては,クリティカルセクションと同様の動作となります.

関連項目
spUnlockMutex

spUnlockMutex

目的
ミューテックスオブジェクトの所有権を解放します.

書式
#include <sp/spThread.h> spBool spUnlockMutex(void *handle);

引数
handle
spCreateMutexにより得られたスレッドハンドルを指定します.

戻り値
所有権の解放に成功するとSP_TRUE,失敗するとSP_FALSEを返します.

説明
環境によっては,クリティカルセクションと同様の動作となります.

関連項目
spLockMutex

Last modified: "2013-06-22 10:47:44 hideki"