問題タブ [pthread-barriers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
522 参照

c++ - 並列計算の障壁

ウィキペディアで例が見つかった障壁について読んでいました。それが正しいかどうかは疑問です。( https://en.wikipedia.org/wiki/Barrier_(computer_science)#Implementation )のコードは次のとおりです。

バリア関数では、最初のifブロックに入る前にleave_counterと比較しPて、 と等しいかどうかをチェックしPます。再びelseブロックで、比較があります。

leave_counter値がの場合にのみコントロールに入るので、2 番目の比較の理由は何Pですか? ここで何か不足していますか?

0 投票する
0 に答える
84 参照

multithreading - 公正なマルチスレッド二重障壁を作成するには?

ダブルバリアマルチスレッドプログラムが動作していますが、公平なメカニズムを作成する方法がわかりません (POSIX ミューテックス、条件付き変数バリア関数を使用) - つまり、スレッドのグループは、バリアに到着するまでに最初のバリアに入ります。

私が今まで持っているコードの疑似コード (要約すると、元のコードにはより多くの検証があります。それが十分に明確であることを願っています) -

  1. mutex_lock;

  2. ++_barrier->m_predicate;

  3. /* すべてのスレッドをブロック (最後のスレッドを除く) - バリア ランデブー ポイントで保留中 */

    if(_barrier->m_predicate != _barrier->m_barrierSize) { pthread_cond_wait(&_barrier->m_cond, &_barrier->m_mutex); }

  4. else { /* * Barrier の cond パラメーターによって現在ブロックされているすべてのスレッドを (ポリシーの順序をスケジュールすることによって) ブロック解除します ** リセット: 述語の値は "0" --> スレッドの新しいバッチが最初の
    バリアに入る */

    /* 重要なコード ブロックの終わり */

    pthread_mutex_unlock(&_barrier->m_mutex);