簡體   English   中英

如何將多個 arguments 傳遞給衍生線程(Mbed)?

[英]How to pass multiple arguments to spawned threads (Mbed)?

我使用 Mbed RTOS,我需要將多個 arguments 傳遞給線程 function。

API 文檔中有一個示例:

#include "mbed.h"

Thread thread;
DigitalOut led1(LED1);
volatile bool running = true;

// Blink function toggles the led in a long running loop
void blink(DigitalOut *led) {
    while (running) {
        *led = !*led;
        wait(1);
    }
}

// Spawns a thread to run blink for 5 seconds
int main() {
    thread.start(callback(blink, &led1));
    wait(5);
    running = false;
    thread.join();
}

但只有一個論點可以通過。

有沒有方便的方法傳遞多個arguments? 我不喜歡將它們放入結構並傳遞結構的想法。 但我看不到任何其他方法可以做到這一點。

您可以使用std::tuple<>而不是定義新的struct 在大多數情況下這更簡單,盡管隨着參數成員的數量增加,您可能會發現自己畢竟想要一個結構來獲取它們的名稱,而不是必須按類型或索引來std::get()

不可能有任何其他方式,因為這樣的回調系統通常只提供一個“用戶數據”指針,而我對 Mbed 的簡短谷歌搜索表明它是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM