如何增加堆栈大小为Qt的线程 - 的QThread :: setStackSize()似乎不工作?(

2019-10-19 15:07发布

从这样的问题: SQLite的堆栈溢出运行BULK INSERT的情况下与500行REPLACE:为什么呢? ,我需要增加堆栈大小为Qt的某个线程。

我想这是跨平台的,但我最初的努力得到它工作在Windows启动。

不幸的是,没有什么我试图做成功增加了有问题的线程的堆栈大小。 (I通过将代码,以计算当前堆栈尺寸测量的堆栈大小(见以上链接),并观察到发生在1 MB,其不反映我试图设置堆栈大小堆栈溢出崩溃。)

我曾尝试以下的事情:

在Qt的.pro工程文件:

QMAKE_CXXFLAGS += /F 32000000
QMAKE_LFLAGS   += /STACK:32000000

在源代码中,前行QThread::start()函数被调用的线程上:

work_queue_manager_thread.setStackSize(static_cast<uint>(stackSize));

(其中work_queue_manager_threadQThread实例, stackSize是32000000)。

我已经试过单独上述两种尝试,我曾尝试在一起。 其结果是一样的:堆栈大小保持在1 MB有问题的线索。 它并不反映我所需的堆栈大小。 我无法设置堆栈大小为我的Qt线程。

实际上 ,我怎么设置堆栈大小的一个Qt线程32000000 -和跨Windows和OS X工作的方式吗?

谢谢。

Answer 1:

原来,在问题的工作指示的QMAKE标志。

然而,使用Qt Creator的,执行全部清除,重建不起作用拿起新的标志。 相反,整个调试/发布文件夹必须删除,然后重建进行。 然后,它的工作原理。

但是,仅标志工作的Windows -当我确定OS X的标志,希望不久我可能会更新这个答案。

尽管如此,这些标志的工作指示。



文章来源: How to increase stack size for a thread in Qt - QThread::setStackSize() seems not to work?