これはUsing a thread in C++ to report progress of computationsへのフォローアップの質問です。計算の進捗状況を報告するCの方法は何ですか?
run_difficult_task()
を何度も実行するfor
ループがあるとします。ループがどれだけ進んでいるかを推測したいと思います。
int i;
for (i=0; i < 10000; ++i) {
run_difficult_task(i);
if (i % 100 == 0) {
printf("i = %d\n", i);
}
}
が、そのようなアプローチの主な問題は、run_difficult_task()
を実行すると文字通り(無限ループなどで立ち往生されることによって)永久に取るかもしれないということですので、私が進行を取得したいと思います:私は書くために使用しましたループ変数i
の値を印刷することによって、毎秒k
秒に報告します。
私は様々なプログラミング言語でオブジェクト指向のマルチスレッド(これについてはあまりよく知られていません)に関するかなりの豊富な文献を見つけましたが、Cスタイルでこれを行うことがわかった質問は、時代遅れです。プラットフォームに依存しない、私が欲しいことをするC11の方法はありますか?何もない場合、私はunixとgccで動作するメソッドに興味があります。
注:私ははないは、(例えば、OpenMP、と)並行してrun_difficult_task
のさまざまなインスタンスを実行したいんが、私は、並列にfor
ループと報告メカニズムを実行したいです。
関連:How to "multithread" C codeとHow do I start threads in plain C?
別のスレッドではなく、別のプロセスにレポートを作成する方が簡単ですか? – user3528438