首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qtconcurrent调用QTime:currentTime产生异常

qtconcurrent调用QTime:currentTime产生异常
EN

Stack Overflow用户
提问于 2010-02-04 05:10:44
回答 1查看 546关注 0票数 0

我似乎只在使用Qtconcurrent::run创建的线程中生成了异常

我有一个名为FPSengine的类,它有一个名为FPSengine::getData()的方法,该方法由主线程和其他3个线程调用(2个QThreads和1个使用QtConcurrent::run())。在FPSengine::getData()中,我调用QTime::currentTime()。如果我从主线程或某个QThreads调用FPSengine::getData(),我不会有任何问题,但是当我从用Qtconcurrent::run()创建的线程调用FPSengine::getData()时,我有时会得到一个异常。Qtconcurrent或QTime:currentTime()甚至tzset (由QTime::currentTime从gdb堆栈中调用)会不会有问题?还是我的代码出了什么问题。下面是失败线程的堆栈信息:

0提升/lib/libc.so.6 0

%1中止/lib/libc.so.6 %0

2 ??/lib/libc.so.6 %0

3 ??/lib/libc.so.6 %0

4 free /lib/libc.so.6 %0

5 ??/lib/libc.so.6 %0

6 tzset /lib/libc.so.6 %0

7 QTime::currentTime() /usr/lib/libQtCore.so.4 %0

8 FPSengine::xmitData FPSengine 2.cpp 93

9 FPSengine::getData FPSengine 2.cpp 21

10threadDatalog::运行threaddatalog.cpp 109

11 ??/usr/lib/libQtCore.so.4 %0

12 start_thread /lib/libpthread.so.0 %0

13 clone /lib/libc.so.6 0 14 ??0

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-05 02:29:17

QTime::currentTime() (或者实际上是任何QTime函数)在文档中并不是并发的。此外,我怀疑底层调用(tzset)是否能够很好地处理并发。因此,您可能需要在调用周围添加一些保护,例如互斥锁,以获取当前时间以防止同时访问。我不知道这是否会解决你的问题,但它可能会有所帮助。

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

https://stackoverflow.com/questions/2195466

复制
相关文章

相似问题

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