开发平台(Platform):
VC++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
最近在开发一个影像处理的算法,将一个画面的左右两部份分别用各自的thread 来处
理, 但是在输出影像的时候,有两个主要的问题。
一个是左右画面不同步的更新,代表display函数读取影像内存的时候,两个各自的
thread并没有同时完成。这个有点想不通,因为在main()中,display函式是在影像处理
member function [proc_entro()]之后, 会有这个现象有点奇怪
一个是会发生左右两边呈现未处理的影像,而且是随机发生的,
目前怀疑是内存的操作造成这个结果,但是还没有什么头绪,
想请问版上高手们是否有什么建议呢
其中thread的输入与输出都是完整的影像大小(包含左半面及右半面影像),因为成像演算
法左右两边是独立的,所以用两个thread分别计算
以下是目前的程式架构
main(){
proc* pproc;
//image_buffer 存放待处理影像的位址
//processed_image_buffer 存放处理完影像的位址
pproc->das_entro(image_buffer, processed_image_buffer);
display(processed_image_buffer);
}
proc.cpp
==============================
proc::das_entro(short* image_buffer, short* processed_image_buffer){
thread das_thd1(&proc::das_thd1, this, image_buffer, processed_image_buffer);
thread das_thd2(&proc::das_thd2, this, image_buffer, processed_image_buffer);
das_thd1.join();
das_thd2.join();
return 0;
}
proc::das_thd1(short* image_buffer, short* das_image_buffer){
...
//左半面影像处理
...
return 0;
}
proc::das_thd2(short* image_buffer, short* das_image_buffer){
...
//右半面影像处理
...
return 0;
}
喂入的资料(Input):
image buffer
预期的正确结果(Expected Output):
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):