Advertisement

Linux环境下开发多线程排序算法

阅读量:

对于那些需要大量计算资源的任务而言,在合理采用多线程处理时能够显著提高性能。这篇博文提供了多线排序的具体实现方法,并阐述了需要注意的问题。

首先阐述总体思路时提到将元素划分为n个部分;然后采用多线程并行的方式进行快速排序;在所有子序列均排好序后需等待各子序列完成后再执行类似于归 merge 排序的操作。

这样时间复杂度估算下来是(基于四核处理器的环境下)O(n + n/4 log(n/4)) ,相较于传统O(n log n)算法而言,在此架构下大约提升了约50% 的性能水平。(建议代入具体数值进行验证)

先来介绍一下pthread_barrier系列函数。

复制代码
 函数原型:

    
 #include <pthread.h>
    
 int pthread_barrier_init(pthread_barrier_t *restrict barrier, const pthread_barrierattr_t *restrict attr, unsigned count);
    
 int pthread_barrier_wait(pthread_barrier_t *barrier);
    
 int pthread_barrier_destroy(pthread_barrier_t *barrier);

参数解释:

pthrea

全部评论 (0)

还没有任何评论哟~