彩票调度算法,每个待运行的进程分配一张彩票,每次需要调度的时候,随机抽取一张已分配的彩票,中奖的进程获得CPU。
如果是优先级高的进程,应该保证被抽取的几率更大,所以需要提高高优先级进程的中奖率:
一、方式一
二、方式二
maxTicket = 8; maxIndex = 4;
selectTicket = rand() % maxTicket;
index = 0;
while( index < maxIndex )
{
if( selectTicket >= ticket[ index ].id && selectTicket <= ticket[ index ].id + ticket[ index ].rang )
{
/* do something */
break;
}
index++;
}