tMode = (BOOL)lpParameter; if(bWaitMode) Sleep(1000); else compute(); if(InterlockedDecrement(&ItemCount) == 0) { printf("Time total %d second.\n", GetTickCount() - BeginTime); SetEvent(CompleteEvent); } return 0; } void TestWorkItem(BOOL bWaitMode, DWORD Flag) { CompleteEvent = CreateEvent(NULL, FALSE, FALSE, NULL); BeginTime = GetTickCount(); ItemCount = 20; for(int i=0; i<20; i++) { QueueUserWorkItem(WorkItem, (PVOID)bWaitMode, Flag); } WaitForSingleObject(CompleteEvent, INFINITE); CloseHandle(CompleteEvent); } ºÜ¼òµ¥£¬ÊÇ°É£¿ÎÒÃǽöÐèÒª¹Ø×¢ÓÚÎÒÃǵĻص÷º¯Êý¼´¿É¡£µ«ÊÇÓëÎÒÃǵļòµ¥Ä£ÄâÀ´±È£¬ÏµÍ³ÌṩµÄÏ̳߳ØÓÐןü¶àµÄÓŵ㡣 Ê×ÏÈ£¬Ï̳߳ØÖÐÏ̵߳ÄÊýÄ¿ÊǶ¯Ì¬µ÷ÕûµÄ£¬Æä´Î£¬Ï̳߳ØÀûÓÃIOÍê³É¶Ë¿ÚµÄÌØÐÔ£¬Ëü¿ÉÒÔÏÞÖƲ¢·¢ÔËÐеÄÏß³ÌÊýÄ¿£¬Ä¬ÈÏÇé¿öÏ£¬½«»áÏÞÖÆΪCPUµÄÊýÄ¿£¬Õâ¿ÉÒÔ¼õÉÙÏß³ÌÇл»¡£ËüÌôÑ¡×î½üÖ´ÐйýµÄÏß³ÌÔÙ´ÎͶÈëÖ´ÐУ¬´Ó¶ø±ÜÃâÁ˲»±ØÒªµÄÏß³ÌÇл»¡£ ϵͳÌṩµÄÏ̳߳ر³ºóµÄ²ßÂÔ£¬ÎÒÃÇÏÂÒ»½Ú¼ÌÐøÔÙ̸¡£
|