硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1037|回复: 6
收起左侧

[ThreadX全家桶] threadx上使用信号量有没有中止功能

[复制链接]

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
发表于 2022-8-31 17:50:21 | 显示全部楼层 |阅读模式
RT,       请教下,因为原来使用ucosiii,现在切到使用threadx,在ucosiii中有一个OSSemPendAbort函数,可以提前中止信号量OSSemPend的等待,提前退出。       现在用threadx后,没找到相应的函数可以调用,请问当我调用tx_semaphore_get等待信号量时,有没有办法可以提前中止等待的函数可以调用?


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115863
QQ
发表于 2022-9-1 00:51:10 | 显示全部楼层
这个函数就是。

image.png
回复

使用道具 举报

4

主题

1447

回帖

1459

积分

至尊会员

积分
1459
发表于 2022-9-1 08:29:40 | 显示全部楼层
这种API在什么场景下使用呢?
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2022-9-1 09:08:32 | 显示全部楼层
eric2013 发表于 2022-9-1 00:51
这个函数就是。

像ucosiii函数输入的参数直接是信号量
OSSemPendAbort ((OS_SEM  *)&app_sem,
                           (OS_OPT   )OS_OPT_PEND_ABORT_1,
                           (OS_ERR  *)&err);
threadx中tx_thread_wait_abort输入的是任务控制块,哪我是不是在调用tx_thread_wait_abort前要调用tx_semaphore_info_get获取信号量,当前挂起的是哪个任务,再调用tx_thread_wait_abort去中止?因为有可能这个信号量有2个以上任务调用并挂起
回复

使用道具 举报

9

主题

39

回帖

66

积分

初级会员

只要努力,没有什么办不到

积分
66
 楼主| 发表于 2022-9-1 09:34:49 | 显示全部楼层
morning_enr6U 发表于 2022-9-1 08:29
这种API在什么场景下使用呢?

我是用在at命令交互上,有些at命令应答时间不确定,当发出一个at命令,调用信号量等待预期的应答,设一个超时时间,如果有应答,但不是我要的结果,就提前中止信号量等待
回复

使用道具 举报

4

主题

1447

回帖

1459

积分

至尊会员

积分
1459
发表于 2022-9-1 19:33:53 | 显示全部楼层
那可以使用信号量的超时参数,是不是也同样达到效果?
回复

使用道具 举报

4

主题

62

回帖

74

积分

初级会员

积分
74
QQ
发表于 2022-9-2 15:48:54 | 显示全部楼层
billy226 发表于 2022-9-1 09:34
我是用在at命令交互上,有些at命令应答时间不确定,当发出一个at命令,调用信号量等待预期的应答,设一个 ...

没明白,你都等到应答了(不管是不是你期望的)说明信号量已经Get到了,怎么还要再去中止信号量等待?
等到期望的就处理,等到的不是期望的就继续等待就是了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-24 01:12 , Processed in 0.331840 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表