• 締切済み

スレッドのロックに関するアルゴリズム

今、プロセッサの並列処理に関する英文を読んでいるのですが、歯が立たなくて困っております。どなたか、知恵をお貸しください。 並列処理で発生する競合を検出するアルゴリズムの動作を示している箇所で、次の英文が出てきました。このアルゴリズムは、共通のロックを保持していない複数のスレッドが、共有サービス(メモリ?)にアクセスした場合に発生することのある競合をみつけるアルゴリズム、とのことです。 Set S(v) = S(v) intersection locks(th). If S(v) == NULL set, then raise an error. vは共有メモリ変数、C(v)は空でないロックのセット、locks(th)はすべてのロックを表すようです。 2つめの文章は、S(v)がNULLのときはエラーが発生、という意味だと思うのですが、1つめの文章の意味がよくわかりません。 intersectionとは論理積のことでしょうか? どなたか、知恵を貸してください!

みんなの回答

  • iriyak
  • ベストアンサー率48% (40/82)
回答No.2

こんにちは。 その英文の原本を参照できるようなサイトの紹介は可能でしょうか?? 文脈が落ちるとその語のみを見て訳出しても意味が通らない可能性があります。 回答者は、そのような場合に質問者の読解の助けにならない(場合によっては混乱させる)ことを心配しています。 また、原本の提供が可能であれば、有識者により、読解を促進させるための文献、参考書籍などの紹介を期待できるかもしれませんよ!

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

アルゴリズムが > Set S(v) = S(v) intersection locks(th). > If S(v) == NULL set, then raise an error. だけとは思えません。 C(v)はS(v)のつもりでしょうか。記述通りだとS(v)の定義が完結していませんし、この前でS(v)の定義をしているか、S(v)を初期化の上で上記処理をthについて反復するのではありませんか。 意図としては、S(v)は共有メモリ変数にアクセスするスレッドが保持すべきロックで、locks(th)はスレッドthが保持するロックだとすると、それが共通部分を持たない(NULL set)と競合の恐れありということだと思います。

関連するQ&A