0

ジョブを実行するために独自のスレッドで実行されるデコード関数があります。実行時間は通常、定義されたタイムアウト値を大幅に下回りますが、場合によっては完了までにさらに時間がかかることがあります。したがって、この関数がプログラムの残りの部分に余分な遅延を引き起こさないようにするために、タイムアウトを設定する必要があります。

これは現在 Windows OS で開発されていますが、Linux への移植可能なソリューションも検討しています。

処理を続行または中止する時間があるかどうかを確認するために、デコード関数内で複数のチェックを行う限り、実装。これは間違いです。素晴らしい練習ではなく、これを改善することを検討しています。

ブーストがそのような機能を提供していることは承知していますが、このプロジェクトではブーストを使用していません。

4

2 に答える 2

3

これは、このテーマに関する Herb Sutter による優れた記事です。結論は次のとおりです。現在のアプローチは問題ありません。デコード スレッドが時間切れになっているかどうかを定期的にチェックするだけです。重要なことは、チェックする頻度についてバランスを取ることです。

于 2012-08-17T11:15:51.177 に答える
0

1つの方法は、タイムアウトにフラグを設定して、スレッドインスタンスに完了を報告せず、続行せず、できるだけ早く自分自身を削除/終了するように指示することです。優先度を可能な限り低くして、忘れてください。すぐに別のスレッドオブジェクトを作成し、古いインスタンス値を上書きして、その後のデコードに新しいスレッドインスタンスを使用します。

最も優先度の低い孤立したスレッドは、最終的に自殺フラグのチェックに取り掛かると、最終的には消滅します。

于 2012-08-17T12:02:07.667 に答える