Boost.Lockfreeが採択されました

Lockfree review starts today, July 18th
Review results for Lockfree
Boost.Lockfree Document


Boost Lockfree Libraryが採択されました。
以下、レビュー結果です。


==

Tim BlechmanによるLockfreeライブラリのレビューが、2011/07/18から7/28の間で行われた。
いくつかの追加要求とともに賛成に8票が投じられ、反対票はなかった。全体的に見て、コミュニティの評決は明らかだった:


Tim BlechmannのLockfreeライブラリを採択する。


活発に行われた議論のいくつかのポイントに触れよう。


設計
このライブラリの設計は健全で、APIは有用である。
後述する命名の問題以外では、変更するべきというコメントはほとんどなかった。


このライブラリをレビューする人々は、おそらくビルディングブロックの公開やポリシーの利用などによって、lockfreeデータ構造のさらなるモジュール化アプローチに期待している。
一般的な関心は、lockfreeリンクリストやbounded、固定サイズデータ構造など、多様なデータ構造の集合を持つことだった。


Atomicライブラリ
レビュー開始時のアナウンスとして、Lockfreeは外部のAtomicライブラリに依存しており、そちらもBoostに入れるために個別にレビューする必要があることを発表した。Lockfreeが、Atomicのレビューなしに採択することができるかどうか議論された。Lockfree提案をレビューし、Atomicのレビューが行われたあとでBoost SVNに追加される可能性がある(このレビューの最初でも発表された)。


これらすべてのディスカッション後、広く興味深いLockfreeデータ構造に基づいて、私は現在のLockfreeライブラリの実装詳細としてAtomicライブラリを追加することを勧める。std::atomicがすでに実装されている処理系のための特別なハンドリングがあるといいだろう。


命名
レビューされたデータ構造の名前を変更することに合意が得られた。名前は、fifo/lifoまたはqueue/stackのどちらかにする必要がある(訳注:現在はfifoとstack)。私の知る限り、Timはこの点にすでに取り組んでいる。


ドキュメント
リファレンスのドキュメントに多くの作業が必要だというほぼ全員の合意があった。ここでは、短い(が網羅的な)リストを記載する:

  • 理論的根拠と実装に関する情報が不足している。
  • データ構造のクラス概要が、「Reference」ページからアクセスできる必要がある。
  • スレッドセーフでない部分をより明確にする(fifo::emptyは非スレッドセーフとして説明される)。
  • 例外保証に関するドキュメントが必要。
  • 内部実装、設計、理論的根拠のためのより多くの情報が必要。


この議論に参加したすべての方に感謝する。