rtx任务间通信--信号量
来源:互联网 发布:网络与诸葛亮什么意思 编辑:程序博客网 时间:2024/05/17 06:46
2013-11-06
--luoqindong
void os_sem_init (
OS_ID semaphore, /* The semaphore object to initialize */
U16 token_count ); /* Initial number of tokens */
参数semaphore的类型必须为OS_SEM, token_count为信号计数初始值,调用信号量相关函数之后,必须先
通过该函数初始化信号量.
OS_RESULT os_sem_send (
OS_ID semaphore ); /* The semaphore whose token count is incremented */
返回值:
OS_R_OK 该返回只有一个返回值.
在任务中发送信号量,参数semaphore的类型必须为OS_SEM.
如果等待该信号量的任务(任务A)优先给比发送信号量的任务(任务B)优先级高,会切换到任务A去运行;如果
任务A比任务B优先级低,任务A状态修改成就绪状态,但是任务A还是继续运行,直到任务B时间片耗尽或任务A
为最高优先级的任务(RTX默认的高度方式)。如果没有任务等待该信号量,该函数会将信号计数值加1.
void isr_sem_send (
OS_ID semaphore ); /* The semaphore whose token count is incremented */
在中断中发送信号量,参数semaphore的类型必须为OS_SEM.
如果等待信号量的任务(任务A)的优先级最高,退出中断后会切换到A去运行,否则将A运行状态置为就绪状态,
有机会就可以运行。如果没有任务等待该信号量,isr_sen_send简单的将信号计数加1.
OS_RESULT os_sem_wait (
OS_ID semaphore, /* The semaphore to get the token from */
U16 timeout ); /* Length of time to wait for the token */
返回值:
OS_R_SEM The calling task has waited until a semaphore became available 任务挂起之后,在超时之前等待到了信号量
OS_R_TMO The timeout expired before the token became available. 等待信号量超时
OS_R_OK A token was available and the function returned immediately. 信号量计数值>0,立即返回
获取信号量.如果信号量计数值不为0,该函数将信号量计数值减1,然后返回,调用该函数的任务继续运行。
如果信号计数值不为0,任务会挂起,切换到其他任务去运行,直到有其他任务或中断调用os_sem_send,isr_sem_send
函数发送信号量,该任务才会有机会运行。timeout为等待信号的超时返回时间,单位为系统tick,0和0xffff是两个特殊值.
0xffff为无限等待
为0时,如果信号量计数值为0,该函数立即返回OS_R_TMO,不会发生任务切换.
--luoqindong
void os_sem_init (
OS_ID semaphore, /* The semaphore object to initialize */
U16 token_count ); /* Initial number of tokens */
参数semaphore的类型必须为OS_SEM, token_count为信号计数初始值,调用信号量相关函数之后,必须先
通过该函数初始化信号量.
OS_RESULT os_sem_send (
OS_ID semaphore ); /* The semaphore whose token count is incremented */
返回值:
OS_R_OK 该返回只有一个返回值.
在任务中发送信号量,参数semaphore的类型必须为OS_SEM.
如果等待该信号量的任务(任务A)优先给比发送信号量的任务(任务B)优先级高,会切换到任务A去运行;如果
任务A比任务B优先级低,任务A状态修改成就绪状态,但是任务A还是继续运行,直到任务B时间片耗尽或任务A
为最高优先级的任务(RTX默认的高度方式)。如果没有任务等待该信号量,该函数会将信号计数值加1.
void isr_sem_send (
OS_ID semaphore ); /* The semaphore whose token count is incremented */
在中断中发送信号量,参数semaphore的类型必须为OS_SEM.
如果等待信号量的任务(任务A)的优先级最高,退出中断后会切换到A去运行,否则将A运行状态置为就绪状态,
有机会就可以运行。如果没有任务等待该信号量,isr_sen_send简单的将信号计数加1.
OS_RESULT os_sem_wait (
OS_ID semaphore, /* The semaphore to get the token from */
U16 timeout ); /* Length of time to wait for the token */
返回值:
OS_R_SEM The calling task has waited until a semaphore became available 任务挂起之后,在超时之前等待到了信号量
OS_R_TMO The timeout expired before the token became available. 等待信号量超时
OS_R_OK A token was available and the function returned immediately. 信号量计数值>0,立即返回
获取信号量.如果信号量计数值不为0,该函数将信号量计数值减1,然后返回,调用该函数的任务继续运行。
如果信号计数值不为0,任务会挂起,切换到其他任务去运行,直到有其他任务或中断调用os_sem_send,isr_sem_send
函数发送信号量,该任务才会有机会运行。timeout为等待信号的超时返回时间,单位为系统tick,0和0xffff是两个特殊值.
0xffff为无限等待
为0时,如果信号量计数值为0,该函数立即返回OS_R_TMO,不会发生任务切换.
- rtx任务间通信--信号量
- rtx任务间通信--信号量
- rtx任务间通信--互斥量
- rtx任务间通信--互斥量
- rtx任务间的通信--event flags
- 3. rtx任务间的通信--event flags
- uCOS-II任务间通信之信号量
- ucos II 任务间 通信之三:信号量1
- ucos II 任务间 通信之三:信号量2
- 【VxWorks系列】任务间同步与通信之信号量
- Linux下多任务间通信和同步-POSIX信号量
- ucos II 任务间 通信之三:信号量1
- uCOS-II任务间通信之信号量 [转载]
- UCOS-II任务间通信(信号量、邮箱、消息队列)
- 进程间通信 信号量
- 进程间通信--信号量
- 进程间通信-信号量
- 进程间通信-信号量
- android 调用剪切板传递文本
- 计算机体系结构1_内存类型
- Birthday Cake UVA10167
- Android SDK Manager更新不了的解决办法
- LightOJ 1011 Marriage Ceremonies (二分图最优匹配 状态压缩+记忆化搜索)
- rtx任务间通信--信号量
- TED:逃出教育的“死亡谷”
- 软考-只是一次考试吗?
- 棋盘覆盖问题
- 计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码!
- rtx任务间通信--互斥量
- 架构师的责任
- 揭开Socket编程的面纱
- 堆和栈的区别