Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> LinuxシステムFAQ >> 実現のLinuxのマルチスレッドの並べ替え

実現のLinuxのマルチスレッドの並べ替え

  
        

計算集約型のタスクのために、合理的なマルチスレッド処理を使用する場合、非常に計算効率を向上させることができます。このブログは、マルチスレッドの並べ替えを達成し、注意を必要とする問題のいくつかを説明することです。すべての

まず、一般的なアイデアについて話:要素を並列にクイックソート複数のスレッドを使用して、n個のセグメントに分割されます。最後のスレッド後、ソートされたこれらのセグメントを待つ同様のプロセスの並べ替えをマージする必要があります。

そうすることの時間の複雑さはO(nlogn)は、おそらく倍の速度に見えるよりも、((N /4)N + N /4log)O(私は4コアのマシンだったと仮定した場合)です。

まず、関数のpthread_barrier家族を紹介する(具体的な数値計算を持参してください)。

関数のプロトタイプます。#include int型pthread_barrier_init(pthread_barrier_t * attrの、符号なしの数を制限*、constのpthread_barrierattr_tをバリアを制限する); int型pthread_barrier_wait(pthread_barrier_t *バリア); int型pthread_barrier_destroy(pthread_barrier_t *バリア); 

パラメータ説明:

pthread_barrier_tは、ロックのカウントで、ロック操作は三つの機能の中に含まれている、我々は直接操作することはできません気にしません。それがうまく投げたあなただけは、オブジェクトのインスタンスを作成する必要があります。

pthread_barrierattr_t機能がデフォルトのプロパティを使用するようにNULLに設定されているように、プロパティは、ロックするように設定されています。

カウントは、あなたが指定した数を待たなければなりません。

人気の説明:
pthread_barrier_ *実際には、唯一のことを行うことができ、手すり(バリアは手すりを意味する)として機能することです。その画像は出席のすべてのスレッドが、同じ時間放出で手すりを削除するまで、複数のスレッドが、手すりの前で同じスタンドに到達することです。 1)init関数は待つスレッドの数を指定するための責任がある、2)待つ()関数は、手すり&'を伝えており、各スレッドのイニシアチブによって呼び出され、私は&'の前にスタートラインに行ってきました;。手すりチェックの終了前に()の実行を待つすべての手すりかどうか、およびので、手すりは、すべてのスレッドがコードの下で実行し続ける消えた場合、そうでない場合には、すべての移動しない関数で停止()スレッドを待たなければなりません、残りは実行を継続するために()のスレッドを待つために実行しなかった; 3)関数は、リソースのinitアプリケーションを解放し破壊します。名前空間stdを使用して

の#includeの#includeの#includeの#includeの#includeの#includeの#includeの#includeの#includeの#includeを; //エラーチェック機能をインライン無効ERR_EXIT(のconst文字列&:

ソートスレッドMSG、int型retnum){IF(retnum = 0){CERR<!
ログイン


ログイン

ログイン
Copyright © Windowsの知識 All Rights Reserved