c - 报告计算进度的 C 方法是什么?

标签 c multithreading pthreads

<分区>

这是 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 codeHow do I start threads in plain C?

最佳答案

Linux(还有 POSIX 系统)提供 alarm库调用。这使您可以在几秒钟后执行某些操作,而不会中断您的主线程,并且在您真正不需要多线程时也不必费心。它非常适合像您这样的用例。

关于c - 报告计算进度的 C 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37059178/

相关文章:

未捕获 C++ 异常,程序终止并中止

c - 带 c 的双链表

c++ - 如何使用 TBB/OpenMP 锁定数组元素

Python ThreadingMixin 和 BaseHTTPServer

pthreads - 在 Win7 中使用 MinGW 中的 pthreads

c - 使用 pthread_create 和 pthread_detach 时出错

c - C 中的数据验证

c - 尝试列出数组内容时出现无法解释的格式

C 斐波那契数列数组段错误

c++ - POSIX 信号量在高争用/负载下不起作用