去掉處理器信息,多線程保護的測試效果:
http://www.shnenglu.com/Files/dede/平衡效果.7zclass loader
{
public:
unsigned long num;
};
class wheelDispatch
{
public:
//注冊處理器
void registLoader(loader *l);
//平衡負載調(diào)度器,返回被選擇的處理器指針
loader *balance(void);
void printLoader(void);
};
main:
srand(time(0));
wheelDispatch wd;
for (int a = 0; a < 10; a++)
{
loader *p= new loader;
wd.registLoader(p);
}
for (int a = 0; a < 10000; a++)
{
loader *p = wd.balance();
++p->num;
//隨機
if (rand() > 40000 && p->num > 0) --p->num;
wd.printLoader();
}
輸出:
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 0 0 0 0 0 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 0 0 0 0 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 0 0 0 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 0 0 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 0 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 0 1 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 0 1 1 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 0 1 1 1 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
0 1 1 1 1 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
1 1 1 1 1 1 1 1 1 1 :負載
0 1 2 3 4 5 6 7 8 9 :序號
1 1 1 1 1 1 1 1 2 1 :負載
大致為1/3出輸出:
0 1 2 3 4 5 6 7 8 9 :序號
379 379 380 380 380 379 378 377 376 375 :負載
0 1 2 3 4 5 6 7 8 9 :序號
379 380 380 380 380 379 378 377 376 375 :負載
0 1 2 3 4 5 6 7 8 9 :序號
380 380 380 380 380 379 378 377 376 375 :負載
0 1 2 3 4 5 6 7 8 9 :序號
380 380 380 381 380 379 378 377 376 375 :負載
大致為2/3出輸出:
0 1 2 3 4 5 6 7 8 9 :序號
641 643 644 645 646 647 648 649 649 649 :負載
0 1 2 3 4 5 6 7 8 9 :序號
642 643 644 645 646 647 648 649 649 649 :負載
0 1 2 3 4 5 6 7 8 9 :序號
642 643 644 645 646 647 649 649 649 649 :負載
0 1 2 3 4 5 6 7 8 9 :序號
642 643 644 645 646 648 649 649 649 649 :負載
結(jié)尾:
0 1 2 3 4 5 6 7 8 9 :序號
996 997 998 1000 1001 1001 1001 1001 1001 1001 :負載
0 1 2 3 4 5 6 7 8 9 :序號
996 997 999 1000 1001 1001 1001 1001 1001 1001 :負載
0 1 2 3 4 5 6 7 8 9 :序號
996 998 999 1000 1001 1001 1001 1001 1001 1001 :負載
0 1 2 3 4 5 6 7 8 9 :序號
997 998 999 1000 1001 1001 1001 1001 1001 1001 :負載