2

我为 ADC 编写了一个驱动程序,该驱动程序在 read() 函数中使用 Mutex,如果 ADC 已在使用中,则导致线程阻塞。

我目前使用相同的方法在 TWI 接口上读取数据。

我已经看到消息队列用于对要在 TWI 接口上发送的消息进行排队。但是,如果您尝试读回数据 - 无论如何您都希望等待响应。那么,Mutex 方法不是更合适吗?

人们可以就我应该使用什么方法提供他们的想法吗?优点缺点?

谢谢。

4

1 回答 1

2

将请求/响应对象排队到运行接口的一个线程更复杂但更灵活 - 它可以允许使用相同机制进行同步和异步交换。需要协议交换的线程有一个选择——它们可以在某个同步对象上等待接口线程发出已收到响应的信号,或者提供自己的回复队列机制,以便可以将多个请求排队到接口线程和回复在每个完成后排队返回。我通常在接口线程完成时调用的 RR 类中提供一个“OnCompletion(thisRRobject)”函数/方法,因此将实际回复操作委托给请求线程中的代码。RR 对象还可以包含异常/错误消息、超时间隔等的成员。这种复杂性在库中很好,

..或者你可以只使用互斥锁。简单,但仅同步 - 如果前一个交换正在进行,每个请求线程都必须等待。如果请求线程不想等待/阻塞,那就太难了。

课程用马...

于 2012-12-28T12:05:42.250 回答