今、バリアを実装します。しかし、うまくいきませんでした。
バリア時間計算コードを実行すると、pthread_barrier_wait は 180000 us を消費し、バリアは 390000 us を消費します
理由がわからず、もっと速いバリアを作りたい
これが私のバリアコードです
82 pthread_mutex_t mutexwait1;
83 int wait_count = NUM_THREADS;
84 int barrier1234(void) {
85
86 int status, cancel, tmp;
87 status = pthread_mutex_lock(&mutexwait1);
88 wait_count = wait_count - 1;
89 if(wait_count == 0){
90 pthread_cond_broadcast(&cond1);
91 wait_count = NUM_THREADS ;
92 }
93 else
94 status = pthread_cond_wait(&cond1, &mutexwait1);
95
96 pthread_mutex_unlock(&mutexwait1);
97 return status;
98
99 }
いくつかの barrier_wait 関数を見つけましたが、機能しませんでした。( glibc からダウンロード) => バリアをコンパイルするとエラーメッセージ (構造体変数が一致していない) が発生 => このエラーはバージョンによって引き起こされるのだろうか
ubuntu 10.04を使用しています私のバリアが遅い理由を教えてください。そして、どうすればデフォルトの pthread_barrier_wait を実装できますか (私のプラットフォームで)