2017-04-10 14 views
1

Cでは、pthreadを使って共有配列の計算を実行するためにpthreadを利用しています。 pthreadのそれぞれは、その計算領域が重複しないように、明確に与えられたオフセットです。この場合、複数のスレッドが同じ変数にアクセスする場合は、mutexロックが必要ですか?

例:

  • スレッド0更新アレイアレイスルー[0]配列スルー[9]
  • スレッド1つの更新アレイ[10] [19]
  • スレッド2つの更新アレイ[20]スルーarray [29]

この場合、計算上の重複がなく、スレッド境界をまたいで隣接するインデックスの更新に頼らない場合、mutexロックはまだ必要ですか?

答えて

4

いいえ、これらのアクセスは個別の別個のメモリ位置にあるため、競合する可能性もなく、互いに同期する必要もありません。

+1

これらが単純な配列である限り、彼が何らかの要素にアクセスする必要があり、ベクトルオブジェクト自体にアクセスして(そして潜在的に変化させる)必要がある、派手なベクトル構造を使用しているなら、事態はもっと複雑になるかもしれません。 –

関連する問題