白日梦c先森 2021-08-27 16:30
浏览 129
已结题

刚入RT-Thread遇到的问题,相同优先级的两个线程不能轮流执行

现象1:有优先级相同的两个线程A和B,线程都是死循环,当先运行的线程A,且没有让出cpu的动作,这种情况下的现象是线程A一只在执行,B没有执行。
疑问1:居然是两个相同优先级的线程 ,且没有比他们再高的,那么执行A的时候,时间片到了,为什么不会去执行B?

现象2:当先运行的A中有rt_thread_mdelay()的情况下,那么A和B就会轮流执行
疑问2:A有rt_thread_mdelay()可以让出cpu这个理解,当执行到B的死循环之后,怎么又可以回到A?这是时间片到了?为什么现象1不出现?

void led_thread_entry(void *parameter);
void timer_thread_entry(void *parameter);
static rt_thread_t led_thread;
static rt_thread_t timer_thread;

void Task_Init(void)
{
    led_thread = rt_thread_create("ledThread",
                             led_thread_entry,
                             RT_NULL,
                             256,
                             2,
                             10);

    if(led_thread != RT_NULL)
    {
        rt_thread_startup(led_thread);
    }        
    
    timer_thread = rt_thread_create("timerThread",
                             timer_thread_entry,
                             RT_NULL,
                             256,
                             2,
                             10);
        
    if(led_thread != RT_NULL)
    {
        rt_thread_startup(timer_thread);
    }
                                                         
}

void led_thread_entry(void *parameter)
{
    rt_uint32_t count = 0;
    
    while (1)
    {
        if(0 == (count % 100))
        {
            rt_kprintf("led_thread  count = %d\n", count);
//            rt_thread_mdelay(1);
        }
        count++;
     }    
}

void timer_thread_entry(void *parameter)
{
    
    rt_uint32_t count = 0;
    
    while (1)
    {
        if(0 == (count % 100))
        {
            rt_kprintf("timer_thread count = %d\n", count);
            rt_thread_mdelay(1);
        }
        count++;
     }
}


  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月4日
    • 创建了问题 8月27日

    悬赏问题

    • ¥15 做个有关计算的小程序
    • ¥15 MPI读取tif文件无法正常给各进程分配路径
    • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
    • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
    • ¥15 setInterval 页面闪烁,怎么解决
    • ¥15 如何让企业微信机器人实现消息汇总整合
    • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
    • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
    • ¥15 TLE9879QXA40 电机驱动
    • ¥20 对于工程问题的非线性数学模型进行线性化