1.互斥实质上是二进制信号灯,每次只有一个线程可以拥有一个互斥。 此外,同一线程可能会对已拥有的互斥多次执行成功的互斥获取操作。每个互斥都是一个公用资源。
2.两个操作
tx_mutex_get 和 tx_mutex_put。获取操作获得不归另一个线程所有的互斥,而放置操作释放以前获得的互斥。 对于要释放互斥的线程,放置操作数必须等于先前的获取操作数。
3.互斥仅用于互相排斥。 与计数信号灯不同,互斥不能作为事件通知的方法。
4.互斥体互相排斥
互相排斥用于控制线程对特定应用程序区域(也称为关键部分或应用程序资源)的访问 。 如果可用,互斥的所有权计数就为 0。 线程获得互斥后,在互斥时每成功执行一次 Get 操作,所有权计数就会递增一次,每成功执行一次 Put 操作则会递减一次。
5.创建互斥
由应用程序线程在初始化期间或运行时创建。 互斥的初始条件始终是“可用”。 还可以在选择优先级继承的情况下创建互斥。
6.线程挂起
当尝试对已归另一个线程所有的互斥执行获取操作时,应用程序线程可能会挂起。
当拥有线程执行了相同数量的获取操作后,将执行挂起线程的获取操作,为其提供互斥所有权,并恢复线程。 如果多个线程在同一互斥上挂起,这些线程将按照FIFO恢复。
tx_mutex_prioritize设置互斥优先级,将优先级最高的线程置于挂起列表的前面,让所有其他挂起的线程采用相同的 FIFO 顺序。
7.运行时互斥性能信息
通过 tx_mutex_performance_info_get 和 tx_mutex_performance_system_info_get获取。
(1) 整个系统的总数
互斥放置数、互斥获取数、互斥获取挂起数、互斥获取超时数、互斥优先级反转数、互斥优先级继承数
(2) 每个互斥的总数
互斥放置数、互斥获取数、互斥获取挂起数、互斥获取超时数、互斥优先级反转数、互斥优先级继承数
8.互斥控制块 TX_MUTEX
9.抱死