首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为QThread::setStackSize()中的线程增加堆栈大小似乎不起作用?

如何为QThread::setStackSize()中的线程增加堆栈大小似乎不起作用?
EN

Stack Overflow用户
提问于 2014-03-22 23:32:12
回答 1查看 3.5K关注 0票数 2

从问题:SQLite stack overflow when running a bulk INSERT OR REPLACE with 500 rows: why?,我需要增加Qt中某个线程的堆栈大小。

我希望这是跨平台的,但我一开始是试图让它在Windows上工作。

不幸的是,我没有尝试成功地增加有关线程的堆栈大小。(我通过添加代码来计算当前堆栈大小来度量堆栈大小(参见上面的链接),并注意到堆栈溢出崩溃发生在1MB,这并不反映我试图设置的堆栈大小。

我尝试了以下几点:

在Qt的项目.pro文件中:

代码语言:javascript
复制
QMAKE_CXXFLAGS += /F 32000000
QMAKE_LFLAGS   += /STACK:32000000

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

代码语言:javascript
复制
work_queue_manager_thread.setStackSize(static_cast<uint>(stackSize));

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

我分别尝试了上述两种尝试,我也一起尝试过。结果是相同的:对于所讨论的线程,堆栈大小保持在1MB。它没有反映我想要的堆栈大小。我无法为我的Qt线程设置堆栈大小。

我如何将Qt线程的堆栈大小实际设置为32000000 --以及在Windows和OS中工作的方式?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-03-23 04:16:56

结果问题工作中所示的QMAKE标志。

但是,使用Qt执行“所有清洁”和“重新构建”并不能获得新的标志。相反,必须删除整个Debug/Release文件夹,然后执行重新构建。那就成功了。

,但是这些标志只适用于Windows -当我确定OS标志时,我可能会更新这个答案,希望很快。

尽管如此,这些旗帜仍如所示。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22585073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档