3

すべてのディスク アクティビティを独自のスレッドに分離するライブラリを作成しようとしていますが、ドキュメントではそのようなことはあまり気にされていません。

私が達成したいのは、起動を除いて、すべてのディスク アクティビティが非同期であることです。そのためには、ディスクにアクセスするすべてのクラスをラップする必要があります。これまでに見つけたものは次のとおりです。

Qtコア:

QtGui:

もっとあると思います。

4

1 に答える 1

1

いくつかのポイントがあります-

まず、これを行うときは、すべての GUI オブジェクトが QWidget に基づいており、起動スレッドで実行されていることを思い出してください。スレッド化について説明しているhttp://doc.trolltech.com/4.6/threads-qobject.htmlを参照してください。引用は次のとおりです。「QObject は再入可能ですが、GUI クラス、特に QWidget とそのすべてのサブクラスは再入可能ではありません。それらはメイン スレッドからのみ使用できます。前述のように、QCoreApplication::exec() もそのスレッドから呼び出す必要があります。スレッド"。

これは、これらのラッパー クラスのいずれかからの情報を画面に表示する必要がある場合、情報を GUI スレッドに戻すときにオブジェクトの所有権に注意する必要があることも意味します。特に、QObject に基づくものはすべて。

第 2 に、スレッドの開始には実行時間のコストがかかります。したがって、このラッパー スレッド クラスが作成および破棄される回数を最小限に抑えるように設計を構築することをお勧めします。

全体的に、ファイルに対する興味深いアプローチです。これは、現在のアプリケーションで検討するものです。それは私が抱えているいくつかの問題を解決するかもしれません。

于 2010-04-11T16:01:39.247 に答える