0

情報を収集するために作成したプロセスによって、新しい情報で常に更新されているベクトルがあります (1 秒間に約 5 ~ 20 回)。ベクトルの変化を検出できるループを作成し、情報を読み取って、そのイベントに対して作成した適切な分析を実行したいと考えています。ただし、このようなマルチスレッド化によって多くの問題が発生することはわかっているので、このようなことを行うための最善の方法は何かに興味があります。

ベクトルはパブリック クラスに格納され、金融会社から取得したフィードによって更新されます (更新される情報は先物指数です)。

4

2 に答える 2

3

C++ でこれを行う方法がわかりません。共有メモリを使用している場合はvector、その中に格納できますが、そのコンポーネントは依然としてローカルの非共有メモリ チャンクを指しているため、共有できません (アロケータの策略で回避できるかもしれませんが、私はそうではありません)。確かにうまくいくでしょう)。

boostいくつかの共有メモリ機能がありますが、質問から思い出すと、いくつかの欠点があることがわかりません。ほとんどの場合、独自の共有メモリ データ構造を設計し、そこに条件変数を格納するメカニズムを提供して、クライアントが新しいデータがいつ利用可能になるかを判断できるようにする必要があります。

編集:私は質問を見つけましたboost::interprocess

boost::interprocess はプライムタイムの準備ができていますか?

于 2012-07-03T13:11:45.887 に答える
-1

申し訳ありませんが、そのような場合は、デザインを変更することをお勧めします。ベクターを非公開にし、データ フィードで使用されるセッター関数 (push_back() などをラップする) を追加すれば完了です。それとも私は何かを逃しましたか?

于 2012-07-03T13:12:48.563 に答える