diff --git a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md index 818f6c9a7d4356e47b35066a105543319c586fa1..93cc0247eed230a33d1d2cf1d4c024ad6e147c5c 100644 --- a/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md +++ b/rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md @@ -174,9 +174,9 @@ rt_err_t rt_sem_take (rt_sem_t sem, rt_int32_t time); rt_err_t rt_sem_trytake(rt_sem_t sem); ``` -这个函数与 rt_sem_take(sem, 0) 的作用相同,即当线程申请的信号量资源实例不可用的时候,它不会等待在该信号量上,而是直接返回 - RT_ETIMEOUT。下表描述了该函数的输入参数与返回值: +这个函数与 `rt_sem_take(sem, RT_WAITING_NO)` 的作用相同,即当线程申请的信号量资源实例不可用的时候,它不会等待在该信号量上,而是直接返回 - RT_ETIMEOUT。下表描述了该函数的输入参数与返回值: - rt_sem_trytake() 的输入参数和返回值 +rt_sem_trytake() 的输入参数和返回值 |**参数** |**描述** | |---------------|------------------| @@ -682,7 +682,7 @@ rt_err_t rt_mutex_detach (rt_mutex_t mutex); 使用该函数接口后,内核先唤醒所有挂在该互斥量上的线程(线程的返回值是 -RT_ERROR),然后系统将该互斥量从内核对象管理器中脱离。下表描述了该函数的输入参数与返回值: - rt_mutex_detach() 的输入参数和返回值 +rt_mutex_detach() 的输入参数和返回值 |**参数**|**描述** | |----------|------------------| @@ -712,6 +712,25 @@ rt_mutex_take() 的输入参数和返回值 | \-RT_ETIMEOUT | 超时 | | \-RT_ERROR | 获取失败 | +#### 无等待获取互斥量 + +当用户不想在申请的互斥量上挂起线程进行等待时,可以使用无等待方式获取互斥量,无等待获取互斥量使用下面的函数接口: + +```c +rt_err_t rt_mutex_trytake(rt_mutex_t mutex); +``` + +这个函数与 `rt_mutex_take(mutex, RT_WAITING_NO)` 的作用相同,即当线程申请的互斥量资源实例不可用的时候,它不会等待在该互斥量上,而是直接返回 - RT_ETIMEOUT。下表描述了该函数的输入参数与返回值: + +rt_mutex_trytake() 的输入参数和返回值 + +| **参数** | **描述** | +| ------------- | ---------------- | +| mutex | 互斥量对象的句柄 | +| **返回** | —— | +| RT_EOK | 成功获得互斥量 | +| \-RT_ETIMEOUT | 获取失败 | + #### 释放互斥量 当线程完成互斥资源的访问后,应尽快释放它占据的互斥量,使得其他线程能及时获取该互斥量。释放互斥量使用下面的函数接口: @@ -1322,4 +1341,3 @@ thread1 leave. 一个事件集中包含 32 个事件,特定线程只等待、接收它关注的事件。可以是一个线程等待多个事件的到来(线程 1、2 均等待多个事件,事件间可以使用 “与” 或者 “或” 逻辑触发线程),也可以是多个线程等待一个事件的到来(事件 25)。当有它们关注的事件发生时,线程将被唤醒并进行后续的处理动作。 -