多线程编程实例----多线程同时排序

时间:2022-04-02 07:35:35

 这是有趣的程序,是采用多线程使用多种排序算法同时进行排序,下面是主界面的截图:

           多线程编程实例----多线程同时排序 

    想一想,这个程序的思路是非常简单的,无非就是开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来计算毫秒级的时间。

    好了一个比较简单但是很有意思的多线程程序!