spBase
|
マクロ定義 | |
#define | SP_THREAD_PRIORITY_TIME_CRITICAL 15 |
#define | SP_THREAD_PRIORITY_HIGHEST 2 |
#define | SP_THREAD_PRIORITY_ABOVE_NORMAL 1 |
#define | SP_THREAD_PRIORITY_NORMAL 0 |
#define | SP_THREAD_PRIORITY_BELOW_NORMAL (-1) |
#define | SP_THREAD_PRIORITY_LOWEST (-2) |
#define | SP_THREAD_PRIORITY_IDLE (-15) |
#define | SP_EVENT_TIMEOUT_INFINITE -1 |
#define | SP_EVENT_WAIT_FAILED -1 |
#define | SP_EVENT_WAIT_SIGNALED 0 |
#define | SP_EVENT_WAIT_TIMEOUT 1 |
#define | SP_EVENT_WAIT_ABANDONED 2 |
型定義 | |
typedef void(* | spCommandThreadCallback) (spCommandThreadStatus status, long data, void *user_data) |
列挙型 | |
enum | spCommandThreadStatus { SP_COMMAND_THREAD_STARTED = 0 , SP_COMMAND_THREAD_FINISHED = 1 , SP_COMMAND_THREAD_COMMAND_FINISHED = 2 , SP_COMMAND_THREAD_COMMAND_FAILED = 3 , SP_COMMAND_THREAD_COMMAND_WAIT_FAILED = 4 } |
関数 | |
void * | spCreateThread (long stacksize, int priority, spThreadFunc func, void *data) |
void | spDestroyThread (void *handle) |
void | spExitThread (long status) |
void | spYieldThread (void) |
long | spWaitThread (void *handle) |
spThreadId | spGetThreadId (void *handle) |
spThreadId | spGetCurrentThreadId (void) |
spBool | spEqThreadId (spThreadId id1, spThreadId id2) |
void * | spCreateMutex (const char *name) |
void | spDestroyMutex (void *handle) |
spBool | spLockMutex (void *handle) |
spBool | spUnlockMutex (void *handle) |
spBool | spWaitMutex (void *handle) |
void * | spCreateEvent (spBool manual_reset, spBool initial_signal) |
spBool | spDestroyEvent (void *handle) |
int | spWaitEventTimeout (void *handle, long timeout_ms) |
spBool | spWaitEvent (void *handle) |
spBool | spSetEvent (void *handle) |
spBool | spResetEvent (void *handle) |
spBool | spPulseEvent (void *handle) |
spBool | spCreateCommandThread (const char *command, spCommandThreadCallback func, void *data) |
#define SP_THREAD_PRIORITY_TIME_CRITICAL 15 |
Thread priority for really time critical processing (higher than the highest thread priority).
#define SP_THREAD_PRIORITY_HIGHEST 2 |
Highest thread priority.
#define SP_THREAD_PRIORITY_ABOVE_NORMAL 1 |
Thread priority above normal.
#define SP_THREAD_PRIORITY_NORMAL 0 |
Normal thread priority.
#define SP_THREAD_PRIORITY_BELOW_NORMAL (-1) |
Thread priority below normal.
#define SP_THREAD_PRIORITY_LOWEST (-2) |
Lowest thread priority.
#define SP_THREAD_PRIORITY_IDLE (-15) |
Thread priority for idle state (lower than the lowest thread priority).
#define SP_EVENT_TIMEOUT_INFINITE -1 |
Infinite timeout for spWaitEventTimeout() .
#define SP_EVENT_WAIT_FAILED -1 |
Waiting for the event object failed.
#define SP_EVENT_WAIT_SIGNALED 0 |
The event object signaled.
#define SP_EVENT_WAIT_TIMEOUT 1 |
Timeout period elapsed.
#define SP_EVENT_WAIT_ABANDONED 2 |
Waiting for the event object is abandoned.
typedef void(* spCommandThreadCallback) (spCommandThreadStatus status, long data, void *user_data) |
Signature of the callback function for spCreateCommandThread() .
Status of the command thread. This status can be accessed as the 1st argument of spCommandThreadCallback .
|
extern |
新たなスレッドを作成します.この関数により作成されたスレッドが使用されなくなったら, spDestroyThread() を呼んで下さい.
[in] | stacksize | 作成されるスレッドが持つスタックのサイズをバイト数で指定します. 0を指定したときはデフォルトのスタックサイズとなります.この値は環境によって異なります. |
[in] | 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 が指定できます.環境によってはこの値は無視されます. |
[in] | func | スレッド関数のアドレスを指定します. スレッド関数は, spThreadReturn func(void *data); の形式で定義する必要があります. また,スレッド関数の終了コードとして, SP_THREAD_RETURN_SUCCESS (正常終了)と SP_THREAD_RETURN_FAILURE (異常終了)が用意されています. スレッド関数の終了コードは spWaitThread() の戻り値として得られます. |
[in] | data | 新しいスレッドに渡す引数を指定します.スレッド関数で引数を使用しない場合はNULLでも構いません. |
|
extern |
スレッドハンドルを閉じます. spCreateThread() で作成したスレッドを使用しなくなったときに呼んで下さい.
[in] | handle | spCreateThread() により得られたスレッドハンドルを指定します. |
|
extern |
現在のスレッドを終了させます. spCreateThread() により作成されたスレッド以外の関数でこの関数を呼んだ場合の動作は不定です.
[in] | status | 終了コードを指定します. この終了コードは spWaitThread() の戻り値として得られます. |
|
extern |
現在のスレッドの実行権を別のスレッドに渡します.MacOS 9のようにスレッドの実行権が一つだけの環境で有効です. このような環境で長い計算を行う場合には,特定のスレッドが実行権を持ち続けてしまい,他のスレッドは処理が全く行われないことになります. そのため,必要に応じてこの関数を途中で呼び出して下さい.
|
extern |
スレッドの終了を待ちます.
[in] | handle | spCreateThread() により得られたスレッドハンドルを指定します. |
|
extern |
|
extern |
現在のスレッドのスレッドIDを取得します.
|
extern |
スレッドIDからスレッドが同じものであるかどうかをチェックします.
[in] | id1,id2 | チェック対象のスレッドのIDを指定します. |
SP_TRUE | 同じ |
SP_FALSE | 同じでない |
|
extern |
ミューテックスオブジェクトを作成します.この関数を呼んだだけでは所有権は獲得されません.所有権を得るには, spLockMutex() を呼びます. なお,環境によっては,名前が無視され,名前なしのオブジェクトが作られます.
[in] | name | ミューテックスオブジェクトの名前(ヌル終端文字列)を指定します. |
|
extern |
ミューテックスオブジェクトを破棄します. spCreateMutex() で作成したオブジェクトを使用しなくなったときに呼んで下さい.
[in] | handle | spCreateMutex() により得られたオブジェクトハンドルを指定します. |
|
extern |
ミューテックスオブジェクトの所有権を獲得します.環境によっては,クリティカルセクションと同様の動作となります.
[in] | handle | spCreateMutex() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
ミューテックスオブジェクトの所有権を解放します.環境によっては,クリティカルセクションと同様の動作となります.
[in] | handle | spCreateMutex() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
ミューテックスオブジェクトの所有権が解放されるのを待ちます.環境によっては,クリティカルセクションと同様の動作となります.
[in] | handle | spCreateMutex() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
イベントオブジェクトを作成します.
[in] | manual_reset | SP_TRUEにすると,手動でリセットが必要なモードになります. |
[in] | initial_signal | SP_TRUEにすると,関数呼び出しと同時にシグナル状態にします. |
|
extern |
イベントオブジェクトを破棄します. spCreateEvent() で作成したオブジェクトを使用しなくなったときに呼んで下さい.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
イベントオブジェクトがシグナル状態になるのを待機します.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
[in] | timeout_ms | タイムアウトをミリ秒で指定します. SP_EVENT_TIMEOUT_INFINITE を指定すると,シグナル状態になるまで待機し続けます. |
|
extern |
イベントオブジェクトがシグナル状態になるのを待機します.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
イベントオブジェクトをシグナル状態にします.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
イベントオブジェクトを非シグナル状態にします.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
イベントオブジェクトをシグナル状態にした後,すぐに非シグナル状態にします.
[in] | handle | spCreateEvent() により得られたオブジェクトハンドルを指定します. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |
|
extern |
スレッドでコマンドを実行します.
[in] | command | 実行したいコマンドをヌル終端文字列で指定します. |
[in] | func | コールバック関数を指定します.以下の形( spCommandThreadCallback )である必要があります. |
[in] | data | コールバックユーザーデータを指定します.コールバック関数が呼ばれる際に,第3引数にこの値が入ることになります. |
SP_TRUE | 成功 |
SP_FALSE | 失敗 |