QtTaskTree::QProcessTaskDeleter Class
class QtTaskTree::QProcessTaskDeleterQProcessTask で使用されるQProcess 用のカスタムデレッター。さらに...
| ヘッダ | #include <qprocesstask.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS TaskTree)target_link_libraries(mytarget PRIVATE Qt6::TaskTree) |
| qmake: | QT += tasktree |
| 以来: | Qt 6.11 |
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
| void | operator()(QProcess *process) const |
静的パブリックメンバ
| void | syncAll() |
詳細説明
QProcess QProcessTaskDeleter は、実行中のQProcess インスタンスをQTaskTree のQProcessTask を介して高速に破棄できるようにするために使用されます。実行中のQProcess を削除する代わりに、呼び出し元のスレッドの実行を長時間ブロックする可能性があります。これは、500 ms のタイムアウトとともにQProcess::terminate() を呼び出すことで構成され、このタイムアウトが経過した後もプロセスが実行されている場合は、QProcess::kill() の追加呼び出しが実行されます。
最後に、アプリケーションの終了時に、QProcessTaskDeleter::syncAll ()を呼び出して、まだ別スレッドで最終処理される可能性のあるすべてのプロセスを同期させる必要がある。QProcessTaskDeleter::syncAll() への呼び出しは、いくつかのプロセスがまだファイナライズ中である場合に備えて、ブロッキングされる。
QProcessTaskDeleter を使用して実行中のQProcess を削除する場合、すぐにブロックするのではなく、アプリケーションの終了までブロックの可能性(確実ではないが)を延期するため、この戦略は賢明であると思われる。
これはQProcessTask で使用されている。
メンバー関数ドキュメント
[static] void QProcessTaskDeleter::syncAll()
このメソッドはアプリケーションの終了時に呼び出され、QProcessTaskDeleter を使用する前に削除された、まだ実行されている可能性のあるすべてのQProcess インスタンスのファイナライズを同期させる必要があります。この呼び出しはメインスレッドから実行されなければならない。
void QProcessTaskDeleter::operator()(QProcess *process) const
渡されたprocess を最も安全な方法で削除する。渡されたprocess が実行中でなければ、直接削除される。そうでない場合は、process を別のスレッドに移動し、500 ms のタイムアウトとともにQProcess::terminate() を呼び出すことで、最も安全な方法で終了させようとする。このタイムアウトが経過した後もプロセスが実行中であれば、QProcess::kill() の追加呼び出しが実行される。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.