gpt4 book ai didi

c - 计算时以百分比显示运行状态

转载 作者:太空宇宙 更新时间:2023-11-04 03:54:19 25 4
gpt4 key购买 nike

我目前正在编写命令行 C 程序。我的程序中有大量复杂的循环和计算。这里出现一个问题,我的程序大约需要2分钟才能完成计算,所以我想在计算过程中打印一些东西以表明它运行良好,否则程序将静默运行2分钟,这似乎太长了用户,他们可能认为它崩溃了。

但是,如果我简单地插入一行代码将某些值打印到主循环中,它会显着降低我的程序速度(我猜这是因为我的代码会等到 printf 函数生效在屏幕上)。

现在我有了一个实用但非常难看的解决方案,即每 1000 次循环打印一次。对我来说,理想情况下,这个问题的最佳解决方案是以百分比形式打印状态并同时在后台运行代码。 (就像在Linux中执行sudo apt-get update一样)

最佳答案

你可以有一个事件队列机制。假设您的程序执行操作 1、操作 2、操作 3 .. 操作 n。在一个线程中运行主程序,而另一个线程在队列中等待处理事件。将事件从主线程发布到监听器线程。 伪代码

  Main thread

main()
{
create(Q);//Q is global
thread_launch(listener,Q);//Launch the thread with Q as argument
do_action_1();
do_action_2();
......
do_action_n();
}

do_action_n()
{
.....
post(event,Q);//this event should have some information about the action.
}

在单独的监听器线程中运行它

       void ListenerThread(Queue *Q)
{
while ( nextEvent(Q,&event))
{
switch(event)
case action1:
printf("complete %25");
...
case actionn:
printf("completed");

}
}

你需要有这个事件 - C 中的队列实现,虽然这可以通过使用 pthread 库来实现。

关于c - 计算时以百分比显示运行状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com