spBase APIリファレンス
マルチスレッドのための関数です.環境によって動作が異なることがありますので注意して下さい.
-
- 目的
- 新たなスレッドを作成します.
- 書式
-
#include
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
-
- 目的
- スレッドハンドルを閉じます.
- 書式
-
#include
void spDestroyThread(void *handle);
- 引数
-
- handle
- spCreateThreadにより得られたスレッドハンドルを指定します.
- 説明
- spCreateThreadで作成したスレッドを使用しなくなったときに呼んで下さい.
- 関連項目
-
spCreateThread
-
- 目的
- 現在のスレッドを終了させます.
- 書式
-
#include
void spExitThread(long status);
- 引数
-
- status
- 終了コードを指定します.
この終了コードはspWaitThreadの戻り値として得られます.
- 説明
- spCreateThreadにより作成されたスレッド以外の関数でこの関数を呼んだ場合の動作は不定です.
- 関連項目
-
spCreateThread
-
- 目的
- 現在のスレッドの実行権を別のスレッドに渡します.
スレッドの実行権が一つだけの環境で有効です.
- 書式
-
#include
void spYieldThread(void);
- 説明
- いくつかの環境ではスレッドの実行権は一つしかないため,
長い計算を行う場合には,特定のスレッドが実行権を持ち続けてしまい,他のスレッドは処理が行われません.
そのため,必要に応じてこの関数を途中で呼び出して下さい.
-
- 目的
- スレッドの終了を待ちます.
- 書式
-
#include
long spWaitThread(void *handle);
- 引数
-
- handle
- spCreateThreadにより得られたスレッドハンドルを指定します.
- 戻り値
- スレッド関数の終了コードが返ります.スレッドが終了するまでこの関数から戻りません.
- 関連項目
-
spCreateThread
-
- 目的
- ミューテックスオブジェクトを作成します.
- 書式
-
#include
void *spCreateMutex(char *name);
- 引数
-
- name
- ミューテックスオブジェクトの名前を指定します.
- 戻り値
- オブジェクトのハンドルが返ります.オブジェクトの作成に失敗した場合はNULLが返ります.
- 説明
-
この関数を呼んだだけでは所有権は獲得されません.
所有権を得るには,spLockMutexを呼びます.
なお,環境によっては,名前が無視され,名前なしのオブジェクトが作られます.
- 関連項目
-
spDestroyMutex,
spLockMutex
-
- 目的
- ミューテックスオブジェクトを破棄します.
- 書式
-
#include
void spDestroyMutex(void *handle);
- 引数
-
- handle
- spCreateMutexにより得られたスレッドハンドルを指定します.
- 説明
- spCreateMutexで作成したオブジェクトを使用しなくなったときに呼んで下さい.
- 関連項目
-
spCreateMutex
-
- 目的
- ミューテックスオブジェクトの所有権を獲得します.
- 書式
-
#include
spBool spLockMutex(void *handle);
- 引数
-
- handle
- spCreateMutexにより得られたスレッドハンドルを指定します.
- 戻り値
- 所有権の獲得に成功するとSP_TRUE,失敗するとSP_FALSEを返します.
- 説明
- 環境によっては,クリティカルセクションと同様の動作となります.
- 関連項目
-
spUnlockMutex
-
- 目的
- ミューテックスオブジェクトの所有権を解放します.
- 書式
-
#include
spBool spUnlockMutex(void *handle);
- 引数
-
- handle
- spCreateMutexにより得られたスレッドハンドルを指定します.
- 戻り値
- 所有権の解放に成功するとSP_TRUE,失敗するとSP_FALSEを返します.
- 説明
- 環境によっては,クリティカルセクションと同様の動作となります.
- 関連項目
-
spLockMutex
Last modified: "2013-06-22 10:47:44 hideki"