1

私はライブラリを動的にロードし、posix スレッドで実行を開始するアプリケーション用のライブラリを作成しています。アプリケーションの開発者に QThreads を使用するように依頼しましたが、何も変更できないとのことでした。

私のライブラリで Qt Dbus バインディングを使用したいのですが、QThread コンテキストで実行されていないため、うまく機能しません。私は2つのことに気づきました:

  1. 非同期呼び出しへの応答がありません ( QDBusPendingCallWatcher のドキュメントで説明されているように)。同期 (ブロッキング) 呼び出しは正常に機能しています。
  2. dbus インターフェイスの作成時に次のメッセージが表示されます。

    QSocketNotifier: QThread で開始されたスレッドで
    のみ使用できます QSocketNotifier: QThread で開始されたスレッドでのみ使用できます

私が見つけたすべての情報は、それを機能させるために QThread を作成する必要があり、posix スレッドを使用しないと言っていましたが、私には選択の余地がありません。

QSocketNotifier を非 QThread コンテキストから機能させることは可能ですか? はいの場合、どのように?


PSソースからqtライブラリをコンパイルでき、好きなことを何でもできます。したがって、パッチを当てても問題ありません。


カスタム イベント ディスパッチャのインストールを有効にする qt 4.8 用のこのパッチを見つけました。しかし、それが何かを壊すかどうか、そしてスレッドセーフかどうかはわかりません。少し遊んで、動作するかどうかを確認します。

4

0 に答える 0