3#include "libxr_system.hpp"
4#include "libxr_time.hpp"
63 template <
typename ArgType>
94 ThreadBlock(typeof(function) fun, ArgType arg,
const char *name)
97 name_(
reinterpret_cast<char *
>(malloc(strlen(name) + 1)))
109 static void *Port(
void *arg)
111 ThreadBlock *block =
static_cast<ThreadBlock *
>(arg);
112 volatile const char *thread_name = block->name_;
113 block->fun_(block->arg_);
116 return static_cast<void *
>(
nullptr);
119 typeof(function) fun_;
146 XR_LOG_WARN(
"Failed to set thread priority. Falling back to default policy.");
154 "SCHED_FIFO not supported or insufficient range. Using default policy.");
161 XR_LOG_WARN(
"Failed to create thread: %s (%s), Falling back to default policy.",
168 XR_LOG_ERROR(
"Failed to create thread: %s (%s)",
ans);
线程管理类,封装 FreeRTOS 任务创建和调度 Thread management class encapsulating FreeRTOS task creation and scheduling
Thread(libxr_thread_handle handle)
通过 POSIX 线程句柄创建线程对象 Constructor to create a thread object from a POSIX thread handle
static void Sleep(uint32_t milliseconds)
让线程进入休眠状态 Puts the thread to sleep
Thread()
默认构造函数,初始化空线程 Default constructor initializing an empty thread
Priority
线程优先级枚举 Enumeration for thread priorities
@ NUMBER
优先级数量 Number of priority levels
@ REALTIME
实时优先级 Realtime priority
@ IDLE
空闲优先级 Idle priority
@ MEDIUM
中等优先级 Medium priority
libxr_thread_handle thread_handle_
FreeRTOS 线程句柄 FreeRTOS thread handle.
void Create(ArgType arg, void(*function)(ArgType arg), const char *name, size_t stack_depth, Thread::Priority priority)
创建新线程 Creates a new thread
static void Yield()
让出 CPU 以执行其他线程 Yields CPU execution to allow other threads to run
static uint32_t GetTime()
获取当前系统时间(毫秒) Gets the current system time in milliseconds
static void SleepUntil(TimestampMS &last_waskup_time, uint32_t time_to_sleep)
让线程休眠直到指定时间点 Puts the thread to sleep until a specified time
static Thread Current(void)
获取当前线程对象 Gets the current thread object
表示毫秒级时间戳的类。Class representing a timestamp in milliseconds.
LibXR Color Control Library / LibXR终端颜色控制库
TaskHandle_t libxr_thread_handle
线程句柄类型定义 Thread handle type definition
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值