0
我正在使用Netbeans C++创建一个小项目。我有这个简单的代码:cv :: namedWindow()挂起时调用
int main(int argc, char** argv) {
cv::namedWindow("Output");
// Create Receiver and Decoder on another thread
boost::thread t1 = boost::thread(startReceiver); // Details irrelevant
boost::thread t2 = boost::thread(startDecoder); // Details irrelevant
std::cout << "Waiting..." << std::endl;
t2.join();
t1.join();
std::cout << "Finished." << std::endl;
return 0;
}
程序挂在cv::namedWindow("Output");
。我已暂停使用GDB的程序,这是调用堆栈:
poll()
??()
xcb_connect_to_fd()
xcb_connect_to_display_with_auth_info()
_XConnectXCB()
XOpenDisplay()
gdk_display_open()
gdk_display_open_default_libgtk_only()
gtk_init_check()
gtk_init()
cvInitSystem()
cvNamedWindow()
main (argc=1, argv=0x7fffffffe4c8)
这是轮询的东西,我不知道是什么...任何想法?
解析挂该调用,但现在当我打电话'CV :: imshow(“输出”,IMG);'内它挂起升压线程之一.. .. – justderb 2013-03-13 15:36:06
通常不允许尝试在与主线程不同的线程中显示屏幕上的内容。我不知道'imshow'的实现,但这可能是这里的问题。尝试从主线程调用'imshow'。 – cedrou 2013-03-13 16:09:05
好的,谢谢。因为你确实解决了这个问题,所以标记为正确的,那么我将不得不针对线程问题发布另一个问题...... – justderb 2013-03-14 17:57:01