【发布时间】:2016-05-05 19:56:42
【问题描述】:
这是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() 可能字面意思需要很长时间(陷入无限循环等),所以我想获得一份进度报告每k 秒通过打印出循环变量i 的值。
我在这个网站上找到了很多关于各种编程语言中的面向对象多线程(我不太熟悉)的文献,但是我发现用 C 风格做这件事的问题似乎已经过时了。是否有独立于平台的 C11 方式来做我想做的事?如果没有,那么我会对在 unix 和 gcc 中工作的方法感兴趣。
注意:我确实不希望并行运行 run_difficult_task 的各种实例(例如,OpenMP),但我想运行 for 循环和报告并行机制。
相关:How to "multithread" C code 和 How do I start threads in plain C?
【问题讨论】:
-
让它报告给不同的进程而不是不同的线程不是更容易吗?
标签: c multithreading pthreads