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)
还没有任何评论哟~
