Linux下多線程排序的實現(xiàn)
Linux下多線程排序的實現(xiàn)
對于計算密集型的任務(wù),如果能采用合理的多線程處理,能夠大大的提升計算效率。這篇博文實現(xiàn)了多線程排序,同時講解了一些需要注意的問題。首先,說一下總體的思路:將元素分成n段,使用快速排序多個線程并行處理。最后需要等待這些線程都將分段排好序之后,進(jìn)行類似歸并排序的過程。這樣時間復(fù)雜度算下來是(假設(shè)我是4核的機器)O(n+n/4log(n/4)),比O(nlogn)大概快了一倍的樣子。(請帶入數(shù)值具體計算)。先來介紹一下pthread_barrier系列函數(shù)。函數(shù)原型。#include 。
導(dǎo)讀對于計算密集型的任務(wù),如果能采用合理的多線程處理,能夠大大的提升計算效率。這篇博文實現(xiàn)了多線程排序,同時講解了一些需要注意的問題。首先,說一下總體的思路:將元素分成n段,使用快速排序多個線程并行處理。最后需要等待這些線程都將分段排好序之后,進(jìn)行類似歸并排序的過程。這樣時間復(fù)雜度算下來是(假設(shè)我是4核的機器)O(n+n/4log(n/4)),比O(nlogn)大概快了一倍的樣子。(請帶入數(shù)值具體計算)。先來介紹一下pthread_barrier系列函數(shù)。函數(shù)原型。#include 。
系統(tǒng)大全為您提供對于計算密集型的任務(wù),如果能采用合理的多線程處理,能夠大大的提升計算效率。這篇博文實現(xiàn)了多線程排序,同時講解了一些需要注意的問題。首先,說一下總體的思路:將元素分成n段,使用快速排序多個線程并行處理。最后需要等待這些線程都將分段排好序之后,進(jìn)行類似歸并排序的過程。這樣時間復(fù)雜度算下來是(假設(shè)我是4核的機器)O(n+n/4log(n/4)),比O(nlogn)大概快了一倍的樣子。(請帶入數(shù)值具體計算)先來介紹一下pthread_barrier系列函數(shù)。函數(shù)原型:#include?intpthread_barrier_init(pthread_barrier_t*restrictbarrier,constpthread_barrierattr_t*restrictattr,unsignedcount);intpthread_barrier_wait(pthread_barrier_t*barrier);intpthread_barrier_destroy(pthread_barrier_t*barrier);參數(shù)解釋:pthread_barrier_t,是一個計數(shù)鎖,對該鎖的操作都包含在三個函數(shù)內(nèi)部,我們不用關(guān)心也無法直接操作。只需要實例化一個對象丟給它就好。pthread_barrierattr_t,鎖的屬性設(shè)置,設(shè)為NULL讓函數(shù)使用默認(rèn)屬性即可。count,你要指定的等待個數(shù)。通俗解釋:pthread_barrier_*其實只做且只能做一件事,就是充當(dāng)欄桿(barrier意為欄桿)。形象的說就是把先后到達(dá)的多個線程擋在同一欄桿前,直到所有線程到齊,然后撤下欄桿同時放行。1)init函數(shù)負(fù)責(zé)指定要等待的線程個數(shù);2)wait()函數(shù)由每個線程主動調(diào)用,它告訴欄桿“我到起跑線前了”。wait()執(zhí)行末尾欄桿會檢查是否所有人都到欄桿前了,如果是,欄桿就消失所有線程繼續(xù)執(zhí)行下一句代碼;如果不是,則所有已到wait()的線程停在該函數(shù)不動,剩下沒執(zhí)行到wait()的線程繼續(xù)執(zhí)行;3)destroy函數(shù)釋放init申請的資源。?單線程排序:#include?#include?#include?#include?#include?#include?#include?#include?#include?#include?usingnamespacestd;?//錯誤檢查函數(shù)inlinevoidERR_EXIT(conststring&msg,intretnum){??if(retnum!=0)??{????cerr<經(jīng)驗總結(jié):??以上就是系統(tǒng)大全給大家介紹的如何使的方法都有一定的了解了吧,好了,如果大家還想了解更多的資訊,那就趕緊點擊系統(tǒng)大全官網(wǎng)吧。??本文來自系統(tǒng)大全http:///如需轉(zhuǎn)載請注明!推薦:win7純凈版
Linux下多線程排序的實現(xiàn)
對于計算密集型的任務(wù),如果能采用合理的多線程處理,能夠大大的提升計算效率。這篇博文實現(xiàn)了多線程排序,同時講解了一些需要注意的問題。首先,說一下總體的思路:將元素分成n段,使用快速排序多個線程并行處理。最后需要等待這些線程都將分段排好序之后,進(jìn)行類似歸并排序的過程。這樣時間復(fù)雜度算下來是(假設(shè)我是4核的機器)O(n+n/4log(n/4)),比O(nlogn)大概快了一倍的樣子。(請帶入數(shù)值具體計算)。先來介紹一下pthread_barrier系列函數(shù)。函數(shù)原型。#include 。
為你推薦