Task 執行緒控制

有些時候,需要同時有多件事一起進行。PROS 的 Task 可以把一部分的程式放到背景執行,達成這個目的。

基本用法

void task_function() {
    // whatever you want to run in background
}

pros::Task task(task_function);

這讓我們可以讓機器移動的同時計算機器位置(詳情見 Odometry)

void odometry_loop() {
    while (true) {
        RobotPosition position = get_position();
        pros::delay(10);
    }
}
pros::Task odometry(odometry_loop);

⚠️注意:在背景執行的無限迴圈必須有delay。

Task 執行控制

我們可以用 pros::Task 內建的 function 暫停、繼續、或刪除 Task

Task notification

Task notification 是一種 Task function 與外界溝通的一個管道,可以由外部直接發送通知給背景執行的 task function。

利用Task notification,可以有效解決Task在Driver control繼續跑並造成控制上的問題。

PROS Multitasking tutorial: https://pros.cs.purdue.edu/v5/tutorials/topical/multitasking.html?highlight=task

PROS Multitasking extended API: https://pros.cs.purdue.edu/v5/extended/multitasking.html?highlight=task

Last updated