c - 多线程C程序中串口的调度和访问控制

标签 c multithreading serial-port

串行端口向公众开放,并且线程始终与该端口一起工作。 在运行时创建一个或多个高优先级线程,与主线程不冲突,应该与端口一起工作并在完成后销毁。 我如何调度这些线程并管理对串行端口的访问?

谢谢。

最佳答案

如果您正在创建许多线程,并且您总是希望只有一个线程与串行端口一起工作(一次一个线程),您可以通过使用信号量来管理它的访问(这样它们就不会发生冲突)。

但是,您想要使用的调度算法完全取决于您的需要。当您创建多个线程时,我确信您必须使用 pthread_create API,它可以更灵活地在第二个参数中设置属性(例如优先级)。请使用该参数来设置您的优先级。您可以通过考虑它们的优先级来安排它们,甚至可以使用时间片技术。

在分析您的问题时,您似乎正在开发某些开发板。如果是 RTOS 代码,您可以尝试与信号量一起实现抢占机制。

关于c - 多线程C程序中串口的调度和访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37940473/

相关文章:

编译从书中逐字复制的代码会导致编译器错误

c++ - 在 opencv 2.3 中从 RGB 图像中分离出红色分量图像

c# - 线程仍在运行还是只是 LINQPad?

c++ - 使用串行端口的 MFC 应用程序

c - 代码已成功编译,但未执行 func()。有人请提出所需的更改

不能为每个元素洗牌一次

multithreading - 带有 Jersey 的异步 REST API

java - Java多线程奇怪的问题。某些线程自行关闭?

Go - 使用不打印的 goroutines 解析串口输入

c - Linux rs232 读取 - 选择调用似乎会阻塞,直到不再发送数据