簡體   English   中英

C pthreads:從main開始一個線程

[英]C pthreads: Start a Thread from main

我正在使用帶有嵌入式Linux(C)的ARM處理器。 我的主程序必須執行實時操作,並在一段時間后(由主程序確定)我必須通過藍牙連接將數據發送到Android平板電腦。

我想將藍牙數據傳輸外包給POSIX線程。 在main函數中,我現在要觸發Thread來執行數據發送。 那么我怎么能'重啟'一個線程,因為它應該只在主要功能必須通過藍牙發送數據? 這就是為什么它也沒有幫助在Thread函數中有一個循環(與sleep函數結合),因為正如我已經說過的,時間由main函數決定,而不是Thread函數本身。

那么有沒有重啟線程的選項? 或者,如果有人有更好的想法來解決這個問題,我願意接受它。 :)

最簡單的是使用同步例程。 信號量浮現在腦海中:

thread() {
    for (;;) {
        sem_wait(&semaphore);
        send_data(...);
    }
}

main() {
    get_data();
    pus_data_in_a_buffer();
    sem_post(&semaphore);
    // ...
}

但是,如果您只需要異步發送數據,您可能需要查看異步IO庫aio(7)

您可以只進行線程循環,檢查發送緩沖區是否准備好發送,然后如果沒有准備就暫停。 雖然不是每種情況都不理想,但你當然可以讓線程保持循環並等待某些事情要做。

請注意,這對於每種情況都不實用,但是因為您已經提到它是實時場景,這可能是保持峰值性能的最佳選擇,因為信號量可能有些昂貴(就處理時間而言)。 如果您不需要這樣的優化,那么使用信號量可能更安全。

暫無
暫無

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

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