XU_xuxuxuxu 2019-11-08 15:29 采纳率: 0%
浏览 343

在中断中提交信号量 然后查询信号量的值不对

OSIntEnter();
OSSemPost(MyEventSem);
OSSemQuery(MyEventSem,&mySemData);
printf("任务A完成提交信号量,当前信号量为 %d \n",mySemData.OSCnt);

OSIntExit();
OSTimeDly(1000);
}
}

任务C开始,延时400个时钟周期 任务B开始,延时300个时钟周期 任务A创建信号量成功,当前信号量为 2
任务A当前信号量为 2
任务A请求成功,任务A当前信号量为 1
任务B当前信号量为 1
任务B请求信号量成功,当前信号量为 0
任务C开始请求信号量,当前信号量为 0
任务A开始提交信号量,
任务A完成提交信号量,当前信号量为 0
任务C请求信号量成功,当前信号量为 0
任务B开始释放信号量 任务B完成释放信号量,当前信号量为 1
任务C装备释放信号量 任务C完成释放信号量,当前信号量为 2

我创建的是一个信号量,允许两个任务访问,创建了三个任务。
想在任务A提交信号量后打印出信号量数量。
所以使用中断进行操作但不知道什么地方出现问题了 求指导
(信号量释放后打印出来未+1)

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
    • ¥15 微信公众号自制会员卡没有收款渠道啊
    • ¥15 stable diffusion
    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误