Qt qApp->processEvents() 导致0xC00000FD堆栈溢出问题解决办法
解决办法目前想到的是有两个,一个是在建立connect信号槽连接时,通过Qt::BlockingQueuedConnection配置项,在处理信号过程中阻塞住当前线程,这样就不会发生递归;另一种方法则是,增加一个变量标识当前是正在处理信号还是空闲,当只有在空闲时才去发送信号给主线程,其本质上也是一种阻塞办法,防止递归的繁盛。在运行过程中,可能会存在主线程在处理事件过程中,子线程恰好重新发送了新的信号过来,这个时候就会进入processEvents的递归过程,最终无法跳出该递归,导致堆栈溢出。
原创
2023-05-23 11:14:43 ·
803 阅读 ·
0 评论