問題タブ [qtconcurrent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QtConcurrent ::blockingMapped()およびstd ::vector<>のバグ
QtConcurrentはQTコンテナ(QList
および)では正常に動作するようですが、ドキュメントQVector
で主張されているものとは対照的に、STLコンテナでは失敗します
コンテナで使用したいダミー関数は次のとおりです。
動作する例:
動作しないもの:
これにより、コンパイルエラーが発生し、非常に長くてわかりにくいテンプレートエラーが発生します。
誰かが理由を知っていれば、それは本当に役に立ちます!ありがとう!
エラーログ:
1> C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ xutility(442):エラーC2825:'_Alloc':'::' 1>。\mainが後に続く場合は、クラスまたは名前空間である必要があります.cpp(187):クラステンプレートのインスタンス化への参照を参照'std :: _ Container_base_aux_alloc_real<_Alloc>'コンパイル中1>with1> [1> _Alloc = int 1>] 1> C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ xutility(442):エラーC2903:'rebind':シンボルはクラステンプレートでも関数テンプレートでもありません1> C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ xutility (442):エラーC2039:'再バインド':'のメンバーではありません
global namespace'' 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : error C2143: syntax error : missing ';' before '<' 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : error C2039: 'other' : is not a member of '
グローバル名前空間''1> C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ xutility(442):エラーC2238:';'の前に予期しないトークンがあります 1>。\main.cpp(187):エラーC2248:'std :: _ Container_base_aux_alloc_real <_Alloc> ::〜_Container_base_aux_alloc_real':クラスで宣言された保護されたメンバーにアクセスできません' std :: _ Container_base_aux_alloc_real <_Alloc> '1> with 1> [ 1> _Alloc = int 1>] 1> C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include \ xutility(435):'std :: _ Container_base_aux_alloc_real <_Alloc> ::〜_Container_base_aux_alloc_real'1の宣言を参照> with 1> [1> _Alloc = int 1>]1>。\main.cpp(187):エラーC2440:'初期化中':
qt - QtConcurrentblockingMappedReducedエラー
これは、QtConcurrent ::blockingMappedReducedを使用する最初の試みであり、MSVC 2010 Express(QT 4.7.1ソースコードを使用)でビルドすることはできません。
実際のコードに似た小さな例を作成しましたが、同じ問題が発生します。
コンパイラは、blockingMappedReducedが呼び出される最後の行について文句を言います。
オンラインQTドキュメント(http://doc.qt.nokia.com/4.7-snapshot/qtconcurrentmap.html#blockingMappedReduced)から、プロトタイプは次のとおりです。
私にはこれをデバッグするための専門知識がないのではないかと思います。どんな助けでも大歓迎です。繰り返しになりますが、私のC ++スキルは専門家ではないため、理解するにはヘルプを明示する必要があります(つまり、「引数は常に参照する必要があります」のように、私が持っている以上の知識を前提とするものではなく、実際のコードスニペットです。 )。
よろしくお願いします。
c++ - QtはQtConcurrentの非静的メンバー関数へのポインターをどのようにバインドしますか?
QtConcurrentのドキュメントから:
上記のコードスニペットは、std::tr1::bind
(std::bind
> C ++ 11の場合)と同様の方法で関数をバインドしているように見えます。つまり、非静的メンバー関数(QByteArray::split()
)を取り、(後で)それがメンバーであるオブジェクトの特定のインスタンス(として提供したbytearray
)でそれを呼び出します。
Qtはこれをどのように達成しますか?使用していますか、std::tr1::bind
それともboost::bind
舞台裏のどこかですか?
ドキュメントstd::tr1
では、または代わりに使用する場合についても言及していますが、そのコンテキストでのバインドさboost
れた関数の意味を完全には理解していません。上記の状況は、実際には、他の方法で使用する可能性のある他の状況とは異なる/より専門的/単純ですか?tr1
boost
私はソースを通り抜けようとしましたが、すぐに迷子になります!
c++ - 関数を QtConcurrent::map に渡します
これが私の希望するコードです:
私の問題:step()
はグローバル関数でもメンバーでもないため、これはコンパイルされませんState
。しかし、論理的にはこれは正しいでしょう。なぜなら、step()
は何も変更しないからです。これは、マップの構造にアクセスするだけで、読み取り専用です。
ただし、変更する必要があるのは setstates
です。私は賢く、それぞれを同時に変更したいと考えていましState*
た (ブロックしない方法で)。
step()
グローバルにすべきか?それが役立つだろう?
ruby - QtConcurrent を Ruby (mingw-32) で使用できますか?
QtConcurrent Qt モジュールを Ruby で使用するにはどうすればよいですか? Windows (Ruby 1.9.3 mingw-32) で (qtbindings バイナリ gem を介して) Qt を使用する小さなアプリを開発していますが、スレッドを使用する方法 (または単純な同時メソッド呼び出しを使用する方法) を見つけることができませんでした。ヘルプと例は非常に役立ちます。
前もって感謝します。
c++ - Qt での関数のスレッド化
入力に応じて、通常は 100 ~ 300 の範囲で一定回数実行される for ループがあります。このループを繰り返すたびに、スレッド化したい関数が呼び出されます。スレッド化する関数は、入力ファイルからデータを取得し、それを処理してから、新しい形式で出力ファイルに書き出します...
ここにいくつかの高レベルのコードがあります:
次に、同じクラス内の generateData 内で:
QtConcurrent::run()
andで遊んでみましQtConcurrent::mapped()
たが、あまり運がありませんでした。素晴らしい選択だったと思いますが、私mapped()
の関数は 1 つではなく 2 つのマップを使用します。
スライド 25 あたりでこれをリソースとして使用していました: http://www.develer.com/promo/workshop/enhancing_with_multi_threading.pdf
ありがとう!
c++ - QtConcurrent::runを使用して別のスレッドで信号/スロットを接続する
私のアプリケーションでは、ダイアログに次のコードがあります。
PerformOperation関数は、最終的にシグナルを発行する関数を呼び出しますdrive
。FileProgressChanged
私のOnFileProgressChanged
関数は次のとおりです。
私はいくつかの読書をしていて、QFutureとQFutureWatcherが進行状況の値の監視をサポートしていることを確認しました(これはこの状況でうまく機能します!)が、これらをと組み合わせて使用することはできませんQtConcurrent::run
。
別のスレッドで放出された信号をメインスレッドのスロットに接続して、エミッタスレッドで呼び出された関数の進行状況を監視するにはどうすればよいですか?
*編集-*実際にコードにエラーが見つかりましたが、影響はないようです。this
シグナルの後に引数として追加するのを忘れました
c++ - 項は、1つの引数をとる関数に評価されませんQtConcurrent
こんにちはみんな私は本当にあなたの助けが必要です私がしたいのは画像を拡大縮小し、QtConcurrentを使用してそれを実行することです..私はドキュメントに正確に従いましたが、それでも私はここで私の欠点がコードである場所を見つけることができません
このコードはコンパイルされず、エラーが発生し続けます
c++ - QtConcurrent メンバー関数
メンバー関数の呼び出しを並列化するために使用する QFuture を作成します。より正確には、クラス solveParallel と .h があります。
ここで、メソッド runCompute() は myFutureCompute メンバーを作成しています。.cppは次のようになります
インクルードは大丈夫です。オンラインでのコンパイルの失敗
このエラーで:
さらに、同じコード行の '&Manager' のマウス情報では、次のようになります: エラー: 非静的メンバー参照は特定のオブジェクトに対して相対的でなければなりません。
トリックがどこにあるかわかりますか?ありがとうございます。
c++ - QFutureがresult()で未処理の例外をスローする
最適化メソッドへの呼び出しを並列化するメソッドで 3 つの並列スレッド (および現在のスレッド) を実行します。コードは次のようになります
ここで、resultOptim() は、solverParallelData 内のメソッドであり、単に QFuture result() を呼び出します。dataList は適切に入力されているようです。ただし、ライン
識別できない未処理の例外が発生します。以前は、同時アクセスに問題があり、QMutex クラスでプログラムがクラッシュしました。今はソースが違うと思いますが、何が悪いのかわかりません。
ありがとうございます。