- 表示任务的结构体:
// 定义任务参数的结构体,这里假设任务参数可以是任意类型,用void * 来泛化
typedef struct TaskArg {
// 这里可以根据实际需要添加具体的成员变量
void *data;
} TaskArg;
// 定义任务结构体
typedef struct Task {
// 任务函数指针
void (*func)(TaskArg*);
// 任务函数的参数
TaskArg arg;
} Task;
TaskArg
结构体:用于封装任务函数所需的参数,void * data
可以指向任何类型的数据,具体根据实际任务来确定其指向的数据类型。
Task
结构体:func
是函数指针,指向具体要执行的任务函数,该函数接受一个TaskArg
类型的指针作为参数;arg
是任务函数的参数,类型为TaskArg
。
- 表示任务队列的数据结构:
// 定义任务队列结构体
typedef struct TaskQueue {
Task *tasks; // 任务数组,存储任务
int front; // 队列头
int rear; // 队列尾
int capacity; // 队列容量
} TaskQueue;
tasks
:是一个Task
类型的数组,用于存储任务队列中的任务。
front
:指示队列头的位置,从该位置取出任务执行。
rear
:指示队列尾的位置,新任务将被添加到该位置。
capacity
:表示任务队列的最大容量,防止任务队列无限增长导致内存耗尽。