首先创建2个优先级相同的线程,使他们的时间片不一样,验证是否按照时间片轮转调度线程。(注:shell线程的优先级也是20)
2个线程的入口代码完全相同,都是thread_entry,如果是新的时间片到来,那就打印相应线程信息。
这2个线程 分别在执行30个时间片后结束。
#include <rtthread.h>
#define THREAD_STACK_SIZE 1024
#define THREAD_PRIORITY 20
#define THREAD_TIMESLICE 10
/* 线程入口 */
static void thread_entry(void* parameter)
{
rt_uint32_t value;
rt_uint32_t time,old_time,count = 0;
value = (rt_uint32_t)parameter;
while (1)
{
old_time = rt_tick_get();
if(old_time == time)
{
/* 不是新的时间片,就什么也不干 */
}
else
{
/* 一个新的时间片到来,就打印一次,count用来计算现在是第几个时间片 */
rt_kprintf("thread %d is running ,thread %d count = %d\n", value , value , count);
count++;
time = old_time;
if(count >