#define THREAD_STACK_SIZE 1024
#define THREAD_PRIORITY 10
#define THREAD_TIMESLICE 5
/* 线程入口 */
static void thread_entry(void *parameter)
{
rt_uint32_t value;
rt_uint32_t count = 0;
value = (rt_uint32_t)parameter;
while (1)
{
rt_kprintf("[thread %d count = %d]\n", value, count++);
if (count > 20) return;
rt_thread_yield();
}
}
int timeslice_sample(void)
{
rt_thread_t tid = RT_NULL;
/* 创建线程1*/
tid = rt_thread_create("thread1",
thread_entry, (void *)1,
THREAD_STACK_SIZE,
THREAD_PRIORITY, THREAD_TIMESLICE);
if (tid != RT_NULL)
rt_thread_startup(tid);
/* 创建线程2*/
tid = rt_thread_create("thread2",
thread_entry, (void *)2,
THREAD_STACK_SIZE,
THREAD_PRIORITY, THREAD_TIMESLICE);
if (tid != RT_NULL)
rt_thread_startup(tid);
return 0;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(timeslice_sample, timeslice sample);
打印的log:
msh />timeslice_sample
[thread 1 count = 0]
[thread 1 count = 1]
[thread 1 count = 2]
[thread 1 count = 3]
[thread 1 count = 4]
[thread 1 count = 5]
[thread 1 count = 6]
[thread 1 count = 7]
[thread 1 count = 8]
[thread 1 count = 9]
[thread 1 count = 10]
[thread 1 count = 11]
[thread 1 count = 12]
[thread 1 count = 13]
[thread 1 count = 14]
[thread 1 count = 15]
[thread 1 count = 16]
[thread 1 count = 17]
[thread 1 count = 18]
[thread 1 count = 19]
[thread 1 count = 20]
[thread 2 count = 0]
[thread 2 count = 1]
[thread 2 count = 2]
[thread 2 count = 3]
[thread 2 count = 4]
[thread 2 count = 5]
[thread 2 count = 6]
[thread 2 count = 7]
[thread 2 count = 8]
[thread 2 count = 9]
[thread 2 count = 10]
[thread 2 count = 11]
[thread 2 count = 12]
[thread 2 count = 13]
[thread 2 count = 14]
[thread 2 count = 15]
[thread 2 count = 16]
[thread 2 count = 17]
[thread 2 count = 18]
[thread 2 count = 19]
[thread 2 count = 20]
msh />
貌似同一级别的线程,yield不起作用
环境:ART-Pi + RT-Studio 2.0.0 + SDK 1.1.0
赞赞赞赞赞赞赞