从问题来看:运行批量插入或替换 500 行时 SQLite 堆栈溢出:为什么? https://stackoverflow.com/questions/22576958/sqlite-stack-overflow-when-running-a-bulk-insert-with-500-rows-why,我需要增加Qt中某个线程的堆栈大小。
我希望它是跨平台的,但我首先尝试让它在 Windows 上运行。
不幸的是,我没有尝试做任何事情来成功增加相关线程的堆栈大小。 (我通过添加代码来评估当前堆栈大小(请参阅上面的链接)来测量堆栈大小,并观察到堆栈溢出崩溃发生在 1 MB 处,这并不反映我尝试设置的堆栈大小。)
我尝试过以下操作:
In Qt's .pro
项目文件:
QMAKE_CXXFLAGS += /F 32000000
QMAKE_LFLAGS += /STACK:32000000
在源代码中,前面的行QThread::start()
在线程上调用函数:
work_queue_manager_thread.setStackSize(static_cast<uint>(stackSize));
(where work_queue_manager_thread
is the QThread
实例,以及stackSize
是 32000000)。
我曾单独尝试过上述两种尝试,也曾一起尝试过。结果是相同的:相关线程的堆栈大小仍为 1 MB。它没有反映我想要的堆栈大小。我无法设置 Qt 线程的堆栈大小。
我如何actually将 Qt 线程的堆栈大小设置为 32000000 - 并且以跨 Windows 和 OS X 的方式工作?
Thanks.
结果问题中指示的 QMAKE 标志有效。
但是,使用 Qt Creator,执行全部清理并重建并不能获取新标志。相反,必须删除整个 Debug/Release 文件夹,然后执行重建。然后就可以了。
但这些标志仅适用于 Windows - 当我确定 OS X 标志时,我可能会更新这个答案,希望很快。
尽管如此,这些标志仍按指示工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)