- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在尝试 QThreadPool 之前,我认为多线程程序可能会产生不确定的结果,具体取决于操作系统如何调度它。不过,今天我的看法有点改变。
这是来自 main.cpp 的代码:
runnableInst *hInst = new runnableInst("StarWar");
runnableInst *thread = new runnableInst("BlackSmith");
QThreadPool::globalInstance()->start(hInst);
QThreadPool::globalInstance()->start(thread);
这是运行函数。
void runnableInst::run()
{
// while(1) {
for(int i = 0; i < 50; ++i) {
qDebug()<<"CurrentThread="<< QThread::currentThread();
qDebug()<<threadName + " is outputing. Count="<<i;
Sleep(100);
}
}
这是部分结果。
看来这两个线程是按照加入线程池的先后顺序运行的。这是否意味着我们不会有一个随机线程执行结果与类 QThreadPool?
最佳答案
不,它没有..是的,它有:
线程调度从来都不是随机的——它是由所使用的调度算法和调度程序/调度程序运行时所有线程的状态精确决定的。在很多设计/系统/场景中,它可以出现伪随机,但你的例子不是其中之一
在您的示例中,您的可运行对象执行的实际工作很少,以至于两个池线程只是交替绘制和执行它们。 99.99% 的时间里,两个线程都被阻塞在 sleep(100) 调用上。在那段时间结束时,两个线程都将获得另一个可运行的线程,一个稍微在另一个之前。
您看到的调度行为是示例代码的产物。您不能将其外推到其他设计和/或一般行为。
关于c++ - QThreadPool 是否有序地调度它的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983117/
谁能提供一个使用 QThreadPool 类中的“reserveThread”和/或“releaseThread”的例子?我已阅读文档,但我真的不明白您何时会使用这些功能。互联网搜索示例已空空如也。
我目前正在使用 QThreadPool 来运行一些计算,但是我发现如果我将所有东西都扔进 QThreadPool,它实际上表现不佳并且似乎导致了一些崩溃问题。所以我的想法是一次只有几个线程传递到 QT
我正在“搞乱”线程池,我注意到一个奇怪的异常。所以我在这里问你:我是否正确使用了这个对象?或者您认为这只是一个错误或一个虚拟警告?这里是。我用 QThreadPool 实现了一个基本示例(它与文档中的
在尝试 QThreadPool 之前,我认为多线程程序可能会产生不确定的结果,具体取决于操作系统如何调度它。不过,今天我的看法有点改变。 这是来自 main.cpp 的代码: runnableInst
我正在寻找一些关于使用 QThreadPool 的简明示例。这是我的使用方法: QThreadPool *thread_pool = QThreadPool::globalInstance(); My
如何覆盖 PyQt5 QThreadPool ?是否可以 ? 关注这篇文章https://www.learnpyqt.com/tutorials/multithreading-pyqt-applica
我目前正在将共享指针与 QThreadPool 一起用于多线程应用程序。但是,当线程完成计算时,我遇到了崩溃。 假设类 A 继承自 QRunnable,当传入共享指针作为参数时,它会更新其类变量。这是
我正在编写一个路径跟踪器,并希望通过线程将其并行化。我有一个关于 QT 中多线程对象的设计问题,特别是关于 QRunnable 类。 在我下面的(伪代码)中,我有一个启动 PTRunnable 实例的
我有很多长时间运行的任务在我的 Python 应用程序的后台运行。我把它们都放在了全局QThreadPool中。当用户退出时,所有这些后台任务都需要停止。 现在,我有以下代码: app.aboutTo
我想并行运行 pyqt5 QThreads,但我的代码似乎按顺序运行,有人能告诉我如何并行运行 QThreads 吗? 我的代码的输出:我预计它是并行运行的,而不是按顺序运行的。 Multithrea
我想将多线程 webkit 与 QThreadPool 一起使用 我的代码是: webkitrunnable.cpp: webkitRunnable::webkitRunnable(QUrl inpu
我有一个应该在线程中运行的类,并且需要一个事件循环用于插槽,目前我用 moveToThread() 运行它很好, 但我想使用 QThreadPool我遇到了一个问题。 当使用 QThreadPool
我正在尝试处理大量的 csv 数据,因为它是成 block 的。如果我在没有线程的情况下运行 chunkprocess,应用程序不会崩溃。但是,一旦我添加到线程池中,应用程序就会崩溃并引发以下错误。
我正在做一个使用 QSqlDatabase 的项目。现在我正在使用 QtConcurrent (QFuture) 来执行任何 SQL 命令。 现在,使用 QFuture 运行的每个新命令都会创建新的
我知道一般的理论,线程,QRunnable 和 QThreadPool。它是如何适应的?我的意思是当 QRunnable 的一个实例被创建并分配给 ThreadPool 时,启动一个线程意味着什么?多
我正在构建一个小型多线程 Web 服务器。 QTcpSockets 在主线程中获取,然后由 QtConcurrent 移交给 QThreadPool,后者最终处理数据并发出答案。 我的问题是套接字是在
在应用程序中使用 QThreadPool::globalInstance() 时,我可以将最大线程数设置为一个数字(例如本例中的 50) QThreadPool::globalInstance()->
我在阅读 Qt 的信号与槽 [1] 时注意到它声称信号和槽的开销比任何新操作或删除操作都要低得多。所以我做了一个测试: #include #include #include #include
背景: 我有一个脚本,允许我通过来自私有(private)编辑器的 API 对 PostgreSQL 数据库进行空间查询(我无法直接查询数据库)。该 API 适用于 python 3.2。简而言之,该
我对 QThreadPool 的工作原理感到困惑,并且找不到答案。我想要这样的东西: class Task : public QRunnable { solve problem #nb } 现在,例如
我是一名优秀的程序员,十分优秀!