<分区>
这是 Using a thread in C++ to report progress of computations 的后续问题.
假设我有一个 for
循环,它多次执行 run_difficult_task()
,我想推断循环进行了多远。我曾经写过:
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 中工作的方法感兴趣。
注意:我不希望并行运行 run_difficult_task
的各种实例(例如 OpenMP ),但我想运行 for
循环和并行的报告机制。
相关:How to "multithread" C code和 How do I start threads in plain C?