私はboost_threadsを使用してスレッドセーフなキューと関数呼び出しを使用して自分自身をロールバックしています。しかし、Qtの信号とスロットのイディオムは、いくつかの点では本当に役に立ちますが、他の点では役に立たないようです。たとえば、名前付きパイプの場合、非同期通信を行うのは素晴らしい方法です。Qtスレッドを使用し、大きなオブジェクトをスレッド間で渡します。私は間違っているだけですか?
これは、変換する名前付きパイプで受け取ったオブジェクトを渡してから、別のスレッドに送信してデータを変換して送信するまでです。
私が気づいた最大の問題は、これらのメッセージを シグナルとスロットのメカニズムを介して、あるいはQMetaObject :: invokeMethod()を使用して前後に送信することです。これは、キューされた接続を使用して送信されるように思えますし、正しく理解していれば、渡されているオブジェクトを参照またはポインタで渡す代わりにコピーします。
これは多くのことが起こると本当に非効率になるようです。私の場合はそうなるでしょう。私はこの問題に近づくべき別の方法がありますか?
ただの方法がありますかオブジェクトを別のスレッドの参照またはポインタによってキューに挿入しますか??
熟練者ではありませんが、(SSCCEの方法では、http://sscce.org/を参照してください)いくつかのコードを与えると、役に立つ回答を得るチャンスが劇的に増加します。 – posdef
データのコピーを避けたい場合は、信号/スロット接続を介してデータへのポインタを渡すことができます。しかし、プロセスの境界を越えて信号やスロットをどのように使用するのか、私は本当に理解していません。 – cgmb