You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OSEK共享资源场景下优先级反转相关SimulIDE任务异常问题咨询

OSEK共享资源场景下优先级反转相关SimulIDE任务异常问题咨询

大家好,我在SimulIDE里运行三个任务时遇到了棘手的问题:其中任务A和C共享同一个资源,而且A的优先级比C高,但当C请求到资源进入临界区后,居然被A给抢占了,导致两个任务似乎同时在操作共享资源,这完全不符合预期啊。

我用这段代码模拟忙循环来模拟任务执行时长:

void do_things(int ms=1){
    unsigned long mul = ms * 504UL;
    unsigned long i;
    for(i=0; i<mul; i++) {
        millis();
    };
}

我尝试过调整tick时间,也改了代码里函数的顺序,但问题依然存在,下面是任务运行的日志输出:

[taskC_1]
C start: 2799-->
start_do_things_100
end_do_things_100
C:Resource Requested at: 2900
start_do_things_200
end_do_things_200
[taskA_3]
A start: 3102-->
A:Resource Requested at: 3102
A:Resource Released at: 3303
A end:--> 3304


[taskB_2]
B start: 3304-->

[taskA_4]
A start: 3997-->
A:Resource Requested at: 3997
A:Resource Released at: 4198
A end:--> 4199

B end:--> 4208

C:Resource Released at: 4208
C end:--> 4209

从日志里能清楚看到,C已经在2900时刻请求到了资源,结果A在3102时刻就直接启动并也请求到了资源,这明显违背了共享资源的互斥原则,有没有大佬能帮忙分析下这是哪里出问题了?

备注:内容来源于stack exchange,提问作者Giuseppe Denina Rivera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 10:09:32