- /**
- * @file kc_threads.h
- * @brief スレッドモジュールヘッダファイル
- * @copyright 2020 - 2024 Nomura Kei
- * @depends
- * kc.h
- */
- #ifndef KC_THREADS_H
- #define KC_THREADS_H
-
- #include <kc.h>
-
- #if (KC_IS_WINDOWS)
- #include <kc_threads_win.h>
- #else
- #include <threads.h>
- #endif // KC_IS_WINDOWS
-
- #ifdef __cplusplus
- extern "C"
- {
- namespace kc
- {
- using namespace std;
- #endif
-
- typedef struct KcThread_
- {
-
- /**
- * 指定されたスレッドが生きているか否かを返します。
- *
- * @param thread 対象スレッド
- * @return true/false (スレッドが生存している/していない)
- */
- bool (*is_alive)(struct KcThread_ *thread);
-
- /**
- * スレッドを開始します。
- *
- * @param thread 対象スレッド
- * @param args スレッドに渡す情報
- * @return true/false (スレッド起動成功/失敗)
- */
- bool (*start)(struct KcThread_ *thread, void *args);
-
- /**
- * スレッドが終了するのを待機します。
- *
- * @param thread 対象スレッド
- */
- bool (*join)(struct KcThread_ *thread);
-
- /**
- * Thread 管理情報
- */
- void *_info;
-
- } KcThread;
-
- /**
- * スレッドを生成します。
- *
- * @param run スレッドにて実行する関数へのポインタ
- */
- KcThread *KcThread_new(int (*run)(void *args));
-
- /**
- * Thread を破棄します。
- *
- * @param thread 破棄するスレッド
- */
- void KcThread_delete(KcThread *thread);
-
- /**
- * 指定された ms 間現在のスレッドをスリープさせます。
- *
- * @param time スリープさせるミリ秒数
- * @param force true の場合、シグナルにより割り込まれた場合でも継続してスリープします。
- * @return true/false (成功/中断された)
- */
- bool KcThread_msleep(long time, bool force);
-
- /**
- * 指定された sec 秒 + nsec ナノ秒間現在のスレッドをスリープさせます。
- *
- * @param sec スリープさせる秒数
- * @param nsec スリープさせるナノ秒数
- * @param force true の場合、シグナルにより割り込まれた場合でも継続してスリープします。
- * @return true/false (成功/中断された)
- */
- bool KcThread_sleep(long sec, long nsec, bool force);
-
- #ifdef __cplusplus
- } // namespace kc
- } // extern "C"
- #endif
- #endif // KC_THREADS_H