这是有趣的程序,是采用多线程使用多种排序算法同时进行排序,下面是主界面的截图:
想一想,这个程序的思路是非常简单的,无非就是开5个线程,然后每个线程的入口函数分别对应一个排序算法就可以了,然后如果用户选择的是单线程的话,那么就让这几种排序算法串行执行就可以了。但是应该注意一个问题,怎么去计时?单线程的好说,那么多线程的呢?答案在于WaitForMultipleObjects。这下应该可以很容易的想明白了。
这是源程序中的一句话:dw = WaitForMultipleObjects(4,hThread,TRUE, 1);
这下应该没有什么问题了,就是等全部线程都结束了,再去计算结束的时间就好了。不过自己对计时的办法还不是很熟悉,还是来看看它是怎么计时的:
struct _timeb timetr1;
struct _timeb timetr2;
time_t sec1,sec2;//全局变量
time( &sec1);
_ftime( &timetr1);//计时开始
_ftime( &timetr2);
time( &sec2);//计时结束
long milliseconds=(sec2-sec1)*1000+(timetr2.millitm-timetr1.millitm);//计算所用时间
time_t返回的是一个整型时间,也就是以秒为单位,需要用_timeb来计算毫秒级的时间。
好了一个比较简单但是很有意思的多线程程序!