问题标签 [qthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
20679 浏览

multithreading - *** 检测到 glibc *** 双重释放或损坏(fasttop):

对 QByteArray 的 clear 调用会产生以下异常:

* 检测到 glibc * /home/yan/FPS2/FPS2:双重释放或损坏(fasttop):

0 ?? 1??
2 免费
3 QByteArray::clear()
4 FPSengine::getDatagrams
5 FPSengine::xmitData
6 FPSengine::getData
7 threadDatalog::r​​un
8 ??
9 start_thread
10 克隆
11 ?? 0

这是一个 qt 错误还是与我的代码有关?我知道 QObjects 不是线程安全的(QT 定义不是多个线程调用同一个对象实例的同一个函数),但我的函数有互斥锁。即使经常调用相同的函数,我也很少收到此错误。PS 防​​止这种情况的一种方法是 env var MALLOC_CHECK_ 0

这个 url 涉及一个类似的问题,一些帖子似乎暗示它是由不兼容的 glibc 版本引起的。

*** 检测到 glibc *** perl: 双重释放或损坏 (!prev): 0x0c2b7138 ***

0 投票
1 回答
1110 浏览

multithreading - 关于QThread实现的问题

QThread 对象代表单个执行线程。但是操作系统线程是在创建 QThread 对象时创建的,还是在start()调用方法时创建的呢?

我感兴趣的是我是否可以有几个 QThread 对象,操作系统会在返回start()后创建线程并杀死它们run(),然后我可以再次重用 QThread 对象。但是我不想在 QThread 对象不做任何事情时持有操作系统资源。

(作为记录,我知道 QtConcurrent 和 QThreadPool,不,在这种情况下它们不能满足我的需求)

0 投票
3 回答
16979 浏览

multithreading - 在 QThread 中调用 QThread.exec() 方法是必要的吗?

我没有调用exec()我的代码,但是timerandQUdpSocket工作正常。是exec()用来等待一个event继续吗?

更新:timer正在工作,因为我没有调用moveToThread(this)QThread这意味着它QThread实际上仍然是main thread. 至于QUdpSocket我使用 polling functions。所以它不需要与signals.

提示:如果你需要做init一些事情,这需要event loop在你的 中QThread,你可以delay调用moveToThread直到你不再需要signals,这在程序加载时很实用。您也不需要在构造函数中调用它(run()例如,您可以在内部调用它),只需将this QThread指针复制到变量并call使用指针在稍后/其他地方进行。

0 投票
1 回答
1557 浏览

multithreading - 我可以在属于主线程的 QThread 中使用 waitForReadyRead 吗?

我有一个包含 QUDPsocket 的 QThread(套接字不是 QThread::run() 的本地成员,也许我应该从我正在阅读的内容中更改它)。这个 QThread 在我的 QMainWindow 类中实例化,即 GUI 线程(我没有调用移动到线程)。使用 waitForReadyRead 是否仍然安全,或者我是否绝对需要在 main.cpp 中实例化 QThread 或调用 moveToThread() 以使其成为线程安全的。我在以目前的方式调用 waitForReadyRead 时遇到间歇性双重免费异常(有时我在 3 分钟后几天都没有得到它)​​。

0 投票
5 回答
39029 浏览

python - 发送自定义 PyQt 信号?

我正在通过制作一个简单的 Twitter 客户端来练习 PyQt 和 (Q) 线程。我有两个 Qthread。

  1. 主/GUI 线程。

  2. Twitter 获取线程 - 每 X 分钟从 Twitter 获取数据。

因此,每隔 X 分钟,我的 Twitter 线程就会下载一组新的状态更新(Python 列表)。我想将此列表交给 Main/GUI 线程,以便它可以使用这些状态更新窗口。

我假设我应该使用信号/槽系统将“状态”Python 列表从 Twitter 线程传输到 Main/GUI 线程。所以,我的问题是双重的:

  1. 如何从 Twitter 线程发送状态?

  2. 如何在 Main/GUI 线程中接收它们?

据我所知,PyQt 默认只能通过信号/插槽发送 PyQt 对象。我想我应该以某种方式注册一个自定义信号,然后我可以发送它,但是我发现的关于这个的文档对于像我这样的新手来说非常不清楚。我订购了一本 PyQt 书,但它不会再过一周到货,我不想等到那时。:-)

我在 Ubuntu 上使用 PyQt 4.6-1

更新:

这是不起作用的代码的一个例子。首先,我尝试将信号(“newStatuses”,我刚刚编的一个名称)“连接”到 Main/GUI 线程中的函数 self.update_tweet_list:

然后,在 Twitter 线程中,我这样做:

调用此行时,我收到以下消息:

我搜索了 qRegisterMetaType() ,但没有找到任何我能理解的与 Python 相关的内容。

0 投票
3 回答
6529 浏览

c++ - 我如何从 QWidget 和 QThread 继承?

我有这样的课

当我执行上述操作时,我收到有关连接信号的错误。The error says Reference to "connect" is ambiguous. 有没有办法从两者继承?

谢谢

0 投票
1 回答
148 浏览

c++ - qapps 运行良好但断点有时会产生分段错误

我有一个 qApp,它仅在代码中插入断点(我可以将其放在不同的位置)并且仅在 4-5 个断点停止后才会生成分段错误。我的代码有问题还是这是一个 DBG 错误。该方法是 QThread 类的一部分。

基本上我所做的是我以 mandlebrot 为例,并在我的程序中有 3 个实例。所以程序看起来像一个主窗口,里面有 3 个 mandlebrot 小部件,一个接一个。GDB 是否可能不支持调试多次实例化的 qthread 子类,或者这样做是线程不安全的。我在运行时没有任何问题。

0 投票
2 回答
611 浏览

qt - 使用 Qt 每个线程一个计时器

我修改了 Qt 的广播发送器示例,使其具有十个线程,并且在每个线程中启动一个计时器,但仅触发第一个线程的计时器。如何为每个线程运行一个计时器?

0 投票
1 回答
1824 浏览

multithreading - Is it safe to draw three separate QImages in three separate QThreads?

I have a QMainWindow with three widgets inside that are promoted to a class containing a subclassed QThread. They each draw on a local QImage in their rexpective qthread which is sent with a signal once its drawn and then rendered by calling update (mandlebrot example) from the slot. Is this safe or dangerous? They do not share any data, at least none that I am generating and am wondering what data they could be sharing that is outside of my coding range ie that is generated by Qt automatically.

0 投票
3 回答
10101 浏览

c++ - QThread 阻塞主应用程序

我有一个简单的表单 UI,它有一个按钮插槽,启动一个线程:

run() 方法如下所示:

当我单击调用 LoadImage() 的按钮时,UI 变得无响应。我定期将“ping”消息视为调试输出,但 UI 挂起,不响应任何内容。为什么我的线程没有单独运行?CameraThread 派生为公共 QThread 我正在使用 gcc 版本 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 以及来自 Ubuntu 10.04(x86) 存储库的 QT 库和 QT Creator。