1 Star 0 Fork 0

hemars/lab_c

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
timeslice_demo.c 2.21 KB
一键复制 编辑 原始数据 按行查看 历史
hemars 提交于 2024-12-30 22:44 +08:00 . init
#include <stdbool.h>
#include <stdio.h>
#include <windows.h>
#include <thread>
#include "timeslice.h"
// 创建5个任务对象
TimesilceTaskObj task_1, task_2, task_3, task_4, task_5;
// 具体的任务函数
void task1_hdl() { printf(">> task 1 is running ...\n"); }
void task2_hdl() { printf(">> task 2 is running ...\n"); }
void task3_hdl() { printf(">> task 3 is running ...\n"); }
void task4_hdl() { printf(">> task 4 is running ...\n"); }
void task5_hdl() { printf(">> task 5 is running ...\n"); }
// 初始化任务对象,并且将任务添加到时间片轮询调度中
void task_init() {
timeslice_task_init(&task_1, task1_hdl, 1, 10);
timeslice_task_init(&task_2, task2_hdl, 2, 20);
timeslice_task_init(&task_3, task3_hdl, 3, 30);
timeslice_task_init(&task_4, task4_hdl, 4, 40);
timeslice_task_init(&task_5, task5_hdl, 5, 50);
timeslice_task_add(&task_1);
timeslice_task_add(&task_2);
timeslice_task_add(&task_3);
timeslice_task_add(&task_4);
timeslice_task_add(&task_5);
}
// 开两个线程模拟在单片机上的运行过程
void timeslice_exec_thread() {
while (true) {
timeslice_exec();
}
}
void timeslice_tick_thread() {
while (true) {
timeslice_tick();
Sleep(10);
}
}
// int main() {
int timeslice_demo() {
task_init();
printf(">> task num: %d\n", timeslice_get_task_num());
printf(">> task len: %d\n", timeslice_get_task_timeslice_len(&task_3));
timeslice_task_del(&task_2);
printf(">> delet task 2\n");
printf(">> task 2 is exist: %d\n", timeslice_task_isexist(&task_2));
printf(">> task num: %d\n", timeslice_get_task_num());
timeslice_task_del(&task_5);
printf(">> delet task 5\n");
printf(">> task num: %d\n", timeslice_get_task_num());
printf(">> task 3 is exist: %d\n", timeslice_task_isexist(&task_3));
timeslice_task_add(&task_2);
printf(">> add task 2\n");
printf(">> task 2 is exist: %d\n", timeslice_task_isexist(&task_2));
timeslice_task_add(&task_5);
printf(">> add task 5\n");
printf(">> task num: %d\n", timeslice_get_task_num());
printf("\n\n========timeslice running===========\n");
std::thread thread_1(timeslice_exec_thread);
std::thread thread_2(timeslice_tick_thread);
thread_1.join();
thread_2.join();
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/hemars/lab_c.git
git@gitee.com:hemars/lab_c.git
hemars
lab_c
lab_c
master

搜索帮助