私は、各要素をコンテナから取り出し、アップロード要求をデータベースに送ります。アップロードは同期して行われます。複数のスレッドを待機するstd :: futureまたはstd :: shared_future
コンテナ内の要素は財務契約であり、データ構造コールのティックテーブルが関連付けられている場合とない場合があります。
今、ティックテーブルを持つ契約の場合、私は2回のアップロードをしなければなりません。 1)最初にティックテーブルをdbにアップロードします。 dbはidを返します。 2)IDを契約に添付し、契約をアップロードします。
たとえば、100件の契約を持つコンテナをループしている場合は、30個がティックテーブルを持ち、残りの70個がそうでないとします。
std::future
またはstd::shared_future
がこのようなタスクに適しているかどうかを確認しようとしていますか?
私は未来を30の契約のそれぞれに関連付けて実装し、launch:asyncポリシーでstd :: asyncを呼び出しました。したがって、ループの最初のパスでは、3つのスレッドが起動され、返される未来は契約に関連付けられたコンテナに「移動」されます。 他の70件の契約は通常の方法でアップロードされます。
2回目のパスでは、get()
を保存しておきたいと思います。要求が完了した場合は、IDを取得して契約のアップロードを完了します。将来はコンテナに移動するとスレッドが切り離されると思うので、これはうまくいきません。
私が望む動作を実装するためには、どのようなアプローチをとるべきかアドバイスできますか?
これは同期的に行われていますか?あなたはそれが終わった時の反応を知るでしょう。 – erip
多分、完了したら各ワーカースレッドがその結果をスレッドセーフキューにポストすることができますか? –
ストアドプロシージャがティッカブルと契約を一緒に挿入しないのはなぜですか?それらを分けることにどんな利益がありますか? – ildjarn