概念的な利点と欠点とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 概念的な利点と欠点の意味・解説 

概念的な利点と欠点

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/04/05 03:33 UTC 版)

ソフトウェアトランザクショナルメモリ」の記事における「概念的な利点と欠点」の解説

パフォーマンス的な利点加えてSTM概念的には非常に単純でマルチスレッドプログラムを理解しやすくするので、オブジェクトモジュールのような高レベル抽象化進めることができ、プログラムをよりメンテナンスしやすくできる。ロックベースのプログラミング実際にはしばしば非常に良く知られ問題にぶつかる。 処理的に離れているもしくはどうみても関連なさそう箇所コードタスク内の処理がかぶったりすることについて考え必要がある。これは非常に難しくてプログラマに対してエラー誘発しやすい デッドロックライブロック、その他処理を止めてしまうような問題回避するために、プログラマなんらかのロックを必要とする。このロック処理はしばし無意識のうちに強制され誤りに陥りやすい。また、これらの問題持ち上がった時には、それらを再現したデバッグしたりするのが実は難しかったりする。 ロック優先順位の逆転引き起こす。これは優先度が高いスレッド必要なリソースアクセスたいがために、優先度が低いスレッド強制的に待たされるという現象である。 対照的にメモリトランザクションの考えは大変シンプルである。なぜなら、それぞれのトランザクションあたかもシングルスレッド動作しているかのように見えるからである。デッドロックライブロックはまった起きない外部のトランザクションマネージャーによって制御されるので、プログラマそのような問題について頭を悩ませる要はまったくない優先度逆転については課題として残るが、優先度が高いトランザクションはまだトランザクション完了していない低い優先度トランザクションぶつかって処理が中断することはない。 他方トランザクション振る舞いにおいて、失敗したトランザクション中止するのにも制限設けたいこともある。たいていのI/O処理を含む、トランザクションロールバックできない操作である。このような制限は普通実際にバッファ作ることでやりくりする。このバッファによって、取り消せない操作キュー入れたり、それらを他のトランザクションとは別にあとで実行したりする。 2005年に、Tim HarrisSimon MarlowSimon Peyton Jones そして Maurice Herlihy によって STMConcurrent Haskell 上に構築された。これは任意のアトミック操作をより大きなアトミック操作合成することができる。この役に立つ考えはロックベースプログラミングでは不可能である。以下に筆者言葉引用する。 もしかしたら、最も根源的な意見は(中略)ロックベースプログラムは操作合成できないことでないか。操作くっ付けると元は正し操作うまくいなくなってしまうかも知れない例えば、スレッドセーフハッシュテーブル挿入削除をすることを考えてみよう。ここで、アイテムAをテーブルt1から一つ削除し、それをテーブルt2に挿入することを考える。この時、中間の状態(すなわちアイテムAをどちらも含まない状態)は他のスレッドからは見ることができないとする。もしハッシュテーブル実装者はこの要求見越すことができなければ、この要求をちゃんと満たす方法はない。端的に言うと、個々見れば正し操作挿入削除)はより大きな正し操作作り直すことはできないのだ。 —Tim Harris et al., "Composable Memory Transactions", Section 2: Background, pg.2 STM においては、この問題単純に解決できる。あるトランザクション中における2つ操作を単にラップしてアトミック操作としてくっつけてしまえばよいのである唯一の突っ込み所としてはこの処理を呼び出す側からはっきりしないことがある所である。つまり、コンポーネント提供する方法実装の詳細や、もし操作失敗した場合に、そのトランザクションが再実行試みタイミングである。それに対して筆者retry コマンド提案している。これは、トランザクション失敗したときに生成されるトランザクションログ使って、どのメモリセル読み出されたかを決定するのである。そして、これらのメモリセルのうちの一つ変更され時に自動的にトランザクションリトライする。これは、少なくともある一つの値が変化するまでは、トランザクション振る舞い変わらないだろうという考え拠っている。 筆者また、操作合成するための代替手段提案している。これは orElse というキーワードである。これは一つトランザクション走っていて、そのトランザクションretry するならば、もう一方実行されるというものである。もし両方リトライするならば、関連する変更なされたらすぐに両方ともリトライようとする。この機能は、POSIXネットワーク使われる select() 呼び出し特徴比較されるorElse使えば呼び出し側は複数イベントのうちどれか一つ変化するのを同時に待つことができる。この機能はまたプログラミングインタフェースを単純化できる例えば、同期操作および非同期操作相互に変換する機構単純に作ることができる。

※この「概念的な利点と欠点」の解説は、「ソフトウェアトランザクショナルメモリ」の解説の一部です。
「概念的な利点と欠点」を含む「ソフトウェアトランザクショナルメモリ」の記事については、「ソフトウェアトランザクショナルメモリ」の概要を参照ください。

ウィキペディア小見出し辞書の「概念的な利点と欠点」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「概念的な利点と欠点」の関連用語

概念的な利点と欠点のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



概念的な利点と欠点のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのソフトウェアトランザクショナルメモリ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS