linux - 如何创建监控线程?
问题描述
我在做光线追踪的时候遇到了一个问题。
我创建了多个线程来拆分要处理的整个图像并让它处理其分配的任务。线程按预期工作得很好。我想实时监控工作进度。
为了解决这个问题,我又创建了一个线程来监控当前状态。下面是监控伪代码:
/* 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 的代码。基本上,我认为这个监控线程应该显示当前状态,但是这个线程似乎只被调用一次并退出。如何将此代码更改为要调用的线程函数,直到整个渲染完成?
解决方案
推荐阅读
- node.js - 节点中的 createWriteStream 似乎在“数据”之前执行“结束”事件
- python - 从我的代码中获得正确结果后,如何停止循环运行?
- visual-studio - 使用 vcpkg 安装后如何访问头文件?
- python - 在 __int__.py 中找不到参考 Imputer
- python - 如何使用 Python 将变量传递到 popen 命令中
- javascript - 根据箭头函数获取对象属性
- bash - 在 virtualenv 中运行 jupyter notebook 的 bash 脚本
- singularity-container - 检查容器是否被缓存 - 奇点
- python - 从 random() 得到 0.0 的概率?
- html - 制作响应式导航栏