From 42dee4dff3c0413136168ac740a16dfa15c849fd Mon Sep 17 00:00:00 2001 From: Meco Man <920369182@qq.com> Date: Tue, 1 Jun 2021 11:30:25 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0rt=5Fmutex=5Ftrytake=20ap?= =?UTF-8?q?i=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../programming-manual/ipc1/ipc1.md | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) 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 818f6c9..6566f74 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() 的输入参数和返回值 |**参数** |**描述** | |---------------|------------------| @@ -632,7 +632,7 @@ rt_mutex_t rt_mutex_create (const char* name, rt_uint8_t flag); |**参数** |**描述** | |------------|-------------------------------------------------------------------| | name | 互斥量的名称 | -| flag | 互斥量标志,它可以取如下数值: RT_IPC_FLAG_FIFO(不建议使用) 或 RT_IPC_FLAG_PRIO | +| flag | 互斥量标志,它可以取如下数值: RT_IPC_FLAG_FIFO 或 RT_IPC_FLAG_PRIO | |**返回** | —— | | 互斥量句柄 | 创建成功 | | RT_NULL | 创建失败 | @@ -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)。当有它们关注的事件发生时,线程将被唤醒并进行后续的处理动作。 - -- Gitee From 314ff594703e0791be68356d8c89ac3bca9b4c0d Mon Sep 17 00:00:00 2001 From: Meco <920369182@qq.com> Date: Thu, 3 Jun 2021 02:35:33 +0800 Subject: [PATCH 2/2] update rt-thread-version/rt-thread-standard/programming-manual/ipc1/ipc1.md. --- .../rt-thread-standard/programming-manual/ipc1/ipc1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6566f74..93cc024 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 @@ -632,7 +632,7 @@ rt_mutex_t rt_mutex_create (const char* name, rt_uint8_t flag); |**参数** |**描述** | |------------|-------------------------------------------------------------------| | name | 互斥量的名称 | -| flag | 互斥量标志,它可以取如下数值: RT_IPC_FLAG_FIFO 或 RT_IPC_FLAG_PRIO | +| flag | 互斥量标志,它可以取如下数值: RT_IPC_FLAG_FIFO(不建议使用) 或 RT_IPC_FLAG_PRIO | |**返回** | —— | | 互斥量句柄 | 创建成功 | | RT_NULL | 创建失败 | -- Gitee