C pthreads : Start a Thread from main

标签 c multithreading pthreads

我正在使用带有嵌入式 Linux (C) 的 ARM 处理器。我的主程序必须执行实时操作,并且在一定的持续时间(由主程序确定)后,我必须通过蓝牙连接将数据发送到 Android 平板电脑。

我想将蓝牙数据传输外包给 POSIX 线程。在主函数中,我现在必须触发线程来执行数据发送。那么我该如何“重启”线程,因为它应该在主函数必须执行时通过蓝牙发送数据呢?这就是为什么在 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) .

关于C pthreads : Start a Thread from main,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071698/

相关文章:

c - union 内部的结构

java - 如何杀死一个java线程?

c++ - std::atomic_bool 标志的内存顺序

java - 缓冲读取器和优先级队列一起工作?

c编程-反转字符串中的单个单词

c - gcc:链接时替换

c - 使用 pthreads 时出现段错误

c - 带显示器的读写器

c++ - 如何在 C++ 中清空套接字读/写缓冲区

c - 典型的 xstr 宏中的 "x"是什么意思?