-1

私は他の場所で使用する dll ファイルを持っていますが、dll ファイルには、その内部の関数によって非常に頻繁に更新する必要があるクラスがあります。次に、パスごとに関数を実行するループを作成したいと思いました。しかし、それでも、dll を使用するスレッドがループに陥っているため (終了を待って) 一時停止します。したがって、私のプログラムはフリーズします。

では、スレッドをフリーズせずにこのループを作成するにはどうすればよいでしょうか。

PS。私はTimer(.net)を使用しようとしましたが、管理されたコードを本当に除外したいです。

4

1 に答える 1

0

コード サンプルがなければ、正確な答えを出すのは簡単ではありませんが、基本的に、これには新しいスレッドが必要です。新しいスレッドを作成する方法は、使用している API 次第です。Lirik が提案したように、.NET を使用したり、ブーストを使用したり、WINAPI を使用したりできます。要約すると、C++ のスレッドはプラットフォーム固有です ( C++ でのスレッド化の簡単な例を参照)。そのため、OS とコンパイラに関する詳細がなければ、実際に機能するコード例を作成することはできません。「実行の一時停止」はおそらく単なる無限ループであるため、最初に C++ でのスレッド化に関する資料を読むことを検討してください。

機能がすでにクラスにカプセル化されている場合は、スレッドを正しく開始および終了する責任をクラス自体に与えることができるため、呼び出し元のスレッドがそれについて何も知らなくても、それは素晴らしいことです。

于 2012-08-06T21:12:14.783 に答える