我似乎得到仅与Qtconcurrent创建的线程生成异常::运行

我有一个名为FPSengine)一类具有一个名为FPSengine ::的getData(方法由主线程和其它3个线程调用(与QtConcurrent制成2个QThreads和1 ::运行())。里面FPSengine ::的getData()我叫QTIME :: currentTime的()。如果我叫FPSengine ::的getData()从主线程或QThreads的一个我没有任何问题,但是当我从Qtconcurrent创建的线程运行::调用FPSengine ::的getData()()我有时会得到一个异常。难道还有什么问题Qtconcurrent或QTIME:currentTime的(),甚至tzset(由QTIME称为::从什么gdb的堆栈显示currentTime的)? 或者是有什么错我的代码。这是失败的线程的堆栈信息: 点击 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免费/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 FPSengine2.cpp 93点击 9 FPSengine ::的getData FPSengine2.cpp 21点击 10 threadDatalog ::运行threaddatalog.cpp 109结果 11? /usr/lib/libQtCore.so.4 0点击 12 start_thread /lib/libpthread.so.0 0,点击 13克隆/lib/libc.so.6 0 14? 0

有帮助吗?

解决方案

QTime::currentTime()(或任何的QTime功能,真)不记录为并发的。另外,我怀疑底层调用(tzset)被设计用来处理并发性非常好。因此,你可能需要添加一些保护,如互斥,呼叫周围以获取当前时间,以防止同时访问。我不知道这是否会解决你的问题,但它可能会帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top