/** * @file thread.hpp * @brief J Library Thread ヘッダファイル。 * @copyright 2001 - 2024 Nomura Kei * @depends * j/lang/object.hpp * j/lang/string.hpp */ #ifndef J_LANG_THREAD_HPP #define J_LANG_THREAD_HPP #include <thread> #include <j/lang/object.hpp> #include <j/lang/string.hpp> #include <j/lang/runnable.hpp> namespace j { namespace lang { class Thread : public Runnable, public Object { public: // デフォルトコンストラクタ Thread() noexcept; // コンストラクタ Thread(Runnable *r) noexcept; // コピーコンストラクタ Thread(const Thread &t) noexcept = delete; // ムーブコンストラクタ Thread(Thread &&t) noexcept; // デストラクタ virtual ~Thread() noexcept; // コピー代入演算子 Thread &operator=(const Thread &t) noexcept = delete; // ムーブ代入演算子 Thread &operator=(Thread &&t) noexcept; // スレッドに割り込みます。 // void interrupt(); // スレッドが生存しているか判定します。 bool isAlive() const; virtual void run() override; // スレッドが終了するのを待機します。 void join(); // スレッドを開始します。 void start(); // スレッドのID std::thread::id getId(); // 指定された ms 間現在のスレッドをスリープさせる。 static void sleep(long time); static void yield(); protected: virtual void execRun(); Runnable *target; std::thread tid; bool aliveState; }; } // namespace lang } // namespace j #endif // J_LANG_THREAD_HPP