One Motor 0.5.1
RoboMaster全平台一站式电机驱动库
载入中...
搜索中...
未找到
Othread.hpp
浏览该文件的文档.
1
7#ifndef OTHREAD_HPP
8#define OTHREAD_HPP
9
10#include <functional>
11
12#ifdef ONE_MOTOR_LINUX
13#include <thread>
14#endif
15
16namespace OneMotor::thread
17{
24 template <typename Rep, typename Period>
25 void sleep_for(const std::chrono::duration<Rep, Period>& duration) noexcept
26 {
27#ifdef ONE_MOTOR_LINUX
28 std::this_thread::sleep_for(duration);
29#endif
30 }
31
40 class Othread
41 {
42 public:
46 using ThreadFunc = std::function<void()>;
47
52 explicit Othread(const ThreadFunc& func) noexcept;
53
57 Othread() noexcept;
58
64 ~Othread();
65
66 Othread(const Othread&) = delete;
67 Othread(Othread&&) = delete;
68 Othread& operator=(const Othread&) = delete;
69 Othread& operator=(Othread&&) = delete;
70
76 bool start(const ThreadFunc& func) noexcept;
77
82 bool join() noexcept;
83
89 bool detach() noexcept;
90
95 [[nodiscard]] bool joinable() const noexcept;
96
97 private:
98 ThreadFunc thread_func{nullptr};
99 bool started{false};
100 bool joined{false};
101 bool detached{false};
102#ifdef ONE_MOTOR_LINUX
103 std::thread native_handle{};
104#endif
105 };
106}
107
108#endif //OTHREAD_HPP
void sleep_for(const std::chrono::duration< Rep, Period > &duration) noexcept
使当前线程休眠指定的时间。
定义 Othread.hpp:25
std::function< void()> ThreadFunc
线程执行函数的类型定义。
定义 Othread.hpp:46
Othread(const ThreadFunc &func) noexcept
构造函数,创建一个新的线程并立即开始执行。
定义 L_Othread.cpp:6
bool joinable() const noexcept
检查线程是否可加入。
定义 L_Othread.cpp:53
bool start(const ThreadFunc &func) noexcept
启动线程执行。
定义 L_Othread.cpp:27
Othread() noexcept
默认构造函数,创建一个空的线程对象,不开始执行。
bool detach() noexcept
将线程从当前对象中分离。
定义 L_Othread.cpp:80
bool join() noexcept
等待线程执行完成。
定义 L_Othread.cpp:58