同时访问threadx-queue

时间:2014-06-18 18:15:15

标签: multithreading thread-safety threadx

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

2 个答案:

答案 0 :(得分:1)

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

使用tx_queue_receive时,指定等待消息的时间间隔或时间,直到Threadx调度程序自动挂起线程,并在消息到达后立即恢复线程。

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

答案 1 :(得分:0)

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