完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你是如何启动thread1和thread2线程的?要注意线程的优先级。 举个例子,假设你的thread1和thread2的优先级是5,且在main线程中,创建两个线程,依次启动thread1和thread2,此时,只会有thread1运行,thread2是压根没有启动的,不可能从INIT状态变成就绪态,也就无法加入调度列表了。 如果你将thread1和thread2的优先级改成25,应该能从console看到thread1,2交替输出。 以下是我写的一段测试代码。 2023-04-26 12:39更新。我注意到你用的是Nano,代码已经更新,不使用rt_thread_create,去掉了Finsh部分,只使用rt_thread_init。 代码使用RT-Thread Nano 3.1.3,STM32L4321RCT6上测试。 /* * Copyright (c) 2006-2023, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2023-04-25 lchnu first version */ #include #define DBG_TAG \"main\" #define DBG_LVL DBG_LOG #include #define THREAD_PRIORITY 5 #define THREAD_STACK_SIZE 2048 #define THREAD_TIMESLICE 5 static struct rt_thread thread1, thread2; static rt_uint8_t thread1_stack[THREAD_STACK_SIZE]; static rt_uint8_t thread2_stack[THREAD_STACK_SIZE]; static void thread1_entry(void *parameter) { while(1) { rt_kprintf(\"Thread 1 is running\\n\"); } } static void thread2_entry(void *parameter) { while(1) { rt_kprintf(\"Thread 2 is running\\n\"); } } int main(void) { rt_err_t result; result = rt_thread_init(&thread1, \"thread1\", thread1_entry, RT_NULL, &thread1_stack[0], sizeof(thread1_stack), THREAD_PRIORITY, THREAD_TIMESLICE); if (result == RT_EOK) { rt_thread_startup(&thread1); } result = rt_thread_init(&thread2, \"thread2\", thread2_entry, RT_NULL, &thread2_stack[0], sizeof(thread2_stack), THREAD_PRIORITY, THREAD_TIMESLICE); if (result == RT_EOK) { rt_thread_startup(&thread2); } return 0; } 上述代码的运行结果,只会有thread1输出。 将上述代码的优先级改成25,如下图所示,是可以看到交替输出的。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
683 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2521 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1314 浏览 0 评论
1915 浏览 0 评论
1494 浏览 0 评论
74890 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 03:28 , Processed in 0.745875 second(s), Total 71, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号