#include <windows.h>
#include <stdio.h>
#include <time.h>
DWORD WINAPI DoHomeWork(LPVOID p)
{
int i, j, sum = 0;
for(i = 0; i < 30000; i++)
{
for(j = 0; j < 30000; j++)
{
sum++; // 模拟人做作业的过程,需要耗费人(cpu)的时间
}
}
printf("sum is %d\n", sum);
return 0;
}
void WashClothesWithWashingMachine()
{
int i;
for(i = 0; i < 100; i++)
{
; // 模拟人将衣服放到洗衣机里的过程,需要耗费人(cpu)的少量时间
}
Sleep(5000); // 模拟洗衣机的洗涤过程,不需要人(cpu)花时间
}
int main()
{
int t1, t2;
t1 = clock();
HANDLE hThread = CreateThread(NULL, 0, DoHomeWork, NULL, 0, NULL);
WashClothesWithWashingMachine();
CloseHandle(hThread);
t2 = clock();
printf("time is %d\n", t2 - t1);
return 0;
}
结果为(多线程):
sum is 900000000
time is 4999
如果是单线程,则为:
#include <windows.h>
#include <stdio.h>
#include <time.h>
void DoHomeWork()
{
int i, j, sum = 0;
for(i = 0; i < 30000; i++)
{
for(j = 0; j < 30000; j++)
{
sum++;
}
}
printf("sum is %d\n", sum);
}
void WashClothesWithWashingMachine()
{
int i;
for(i = 0; i < 100; i++)
{
;
}
Sleep(5000);
}
int main()
{
int t1, t2;
t1 = clock();
WashClothesWithWashingMachine();
DoHomeWork();
t2 = clock();
printf("time is %d\n", t2 - t1);
return 0;
}
结果(单线程):
sum is 900000000
time is 8327
显然,多线程更省时间,因为在洗衣机自动洗衣服的时候,人同时在做作业。