1

ThreadX 包含允许线程间通信的消息队列。假设我有几个线程可以读取和写入队列。我是否必须同步对该队列的访问(例如使用互斥锁)?

4

2 回答 2

2

任何 ThreadX 线程都可以向队列发送消息,并且任何线程都可以从队列中接收消息。可以访问队列的线程数没有限制。来自多个线程的访问已经由 ThreadX 与 FIFO 规则同步——线程按照它们被挂起的顺序恢复。但是,可以通过调用函数来更改顺序tx_queue_prioritize

于 2015-04-06T22:00:08.530 回答
1

无需同步,消息通过 FIFO 概念填充到缓冲区中。他们一直在队列中堆积,直到完全填满。您可以选择使用tx_queue_front_sendapi 将消息发送到队列的最前面。

当您使用时,tx_queue_receive您指定等待消息的滴答声或时间,直到那时 Threadx 调度程序会自动挂起线程,并在消息到达时立即恢复它。

由于队列是公共资源,任何线程都可以访问它。

于 2019-10-10T10:09:28.053 回答