ThreadX包含允许线程间通信的消息队列。假设我有几个读写队列的线程。我是否必须同步对此队列的访问(例如,使用互斥锁)?
答案 0 :(得分:1)
无需同步,消息通过FIFO概念填充到缓冲区中。他们一直堆积在队列中,直到队列被完全填满。您可以选择使用tx_queue_front_send
API在队列的最前面发送消息。
使用tx_queue_receive
时,指定等待消息的时间间隔或时间,直到Threadx调度程序自动挂起线程,并在消息到达后立即恢复线程。
并且由于队列是公共资源,因此任何线程都可以访问它。
答案 1 :(得分:0)
任何ThreadX线程都可以向队列发送消息,任何线程都可以从队列接收消息。可以访问队列的线程数没有限制。来自多线程的访问已经由ThreadX与FIFO规则同步 - 线程按它们被挂起的顺序恢复。但是,可以通过调用函数tx_queue_prioritize
来更改订单。