#ifndef PC_HMI_THREAD_UTILS_H
#define PC_HMI_THREAD_UTILS_H

/*
 * 跨平台线程封装
 * - Windows: _beginthreadex
 * - Linux: pthread
 */

#include <stddef.h>

#ifdef _WIN32
#include <process.h>
#include <windows.h>
typedef HANDLE thread_handle_t;
#else
#include <pthread.h>
typedef pthread_t thread_handle_t;
#endif

/* 线程函数类型：void thread_fn(void* arg) */
typedef void (*thread_fn_t)(void* arg);

/*
 * 创建线程，fn 在新区程中执行，arg 传给 fn
 * 返回 0 成功，非 0 失败；out_handle 用于后续 Thread_Join
 */
int Thread_Create(thread_fn_t fn, void* arg, thread_handle_t* out_handle);

/*
 * 等待线程结束
 */
void Thread_Join(thread_handle_t handle);

#endif /* PC_HMI_THREAD_UTILS_H */
