Linux c++ task scheduler example
时间: 2024-12-06 10:20:09 浏览: 13
在Linux环境下,使用C++编写任务调度的例子通常涉及到操作系统级别的编程,如使用POSIX线程库(pthread)或更底层的系统调用。这里提供一个简单的多线程任务调度的基本示例:
```cpp
#include <iostream>
#include <thread>
#include <vector>
#include <chrono>
// 代表一个任务
struct Task {
void (*function)(void*);
void* data;
};
// 定义任务队列
std::vector<Task> tasks;
// 示例任务函数
void executeTask(void* arg) {
Task* task = static_cast<Task*>(arg);
(task->function)(task->data);
delete task; // 注意:这里只是一个简单示例,实际应用需要处理内存管理
}
// 添加任务到队列
void addTask(void(*func)(void*), void* data) {
Task t = {func, data};
tasks.push_back(t);
std::thread worker(executeTask, &t); // 创建新线程运行任务
worker.detach(); // 将任务放到后台异步执行
}
int main() {
// 添加几个任务
addTask([](void* data) { std::cout << "Task 1 started\n"; }, nullptr);
addTask([](void* data) { std::cout << "Task 2 started\n"; }, nullptr);
// 等待所有任务完成,但不会阻塞主线程
std::this_thread::sleep_for(std::chrono::seconds(5));
return 0;
}
```
在这个例子中,`addTask` 函数将任务函数和数据封装成 `Task` 对象,并创建一个新的线程来执行它。通过使用 `detach()`,主进程继续执行而不会等待任务完成。
阅读全文