首页 > 解决方案 > 如何创建监控线程?

问题描述

我在做光线追踪的时候遇到了一个问题。

我创建了多个线程来拆分要处理的整个图像并让它处理其分配的任务。线程按预期工作得很好。我想实时监控工作进度。

为了解决这个问题,我又创建了一个线程来监控当前状态。下面是监控伪代码:

/* Global var */
int cnt = 0; // count the number of row processed


void* render_disp(void* arg){ // thread for monitoring current render-processing 

    /* monitoring global variable and calculate percentage to display */
    double result = 100.*cnt/(h-1);
    fprintf(stderr,"\r3.2%f%% of image is processed!", result);
}

void* process(void* arg){ // multiple threads work here

    // Rendering process
    for(........)
       pthread_mutex_lock(&lock);
       cnt++;
       pthread_mutex_unlock(&lock);

       for(........)

}

我在main()函数中编写了初始化 pthread 和 mutex 的代码。基本上,我认为这个监控线程应该显示当前状态,但是这个线程似乎只被调用一次并退出。如何将此代码更改为要调用的线程函数,直到整个渲染完成?

标签: linuxpthreadsmutex

解决方案


推荐阅读