gpt4 book ai didi

multithreading - 线程,QRunnable 和 QThreadPool,我无法详细介绍

转载 作者:行者123 更新时间:2023-12-04 17:04:46 28 4
gpt4 key购买 nike

我知道一般的理论,线程,QRunnable 和 QThreadPool。它是如何适应的?我的意思是当 QRunnable 的一个实例被创建并分配给 ThreadPool 时,启动一个线程意味着什么?多个线程可以访问同一个 QRunnable 吗?一个 QRunnable 是否必须与一个工作线程一对一映射?

最佳答案

QRunnable 封装了您希望在单独线程中执行的任务。如果您需要知道哪个线程正在运行该任务或在线程之间共享它,那么您可能正在做比 QThreadPool 旨在授权的更复杂的事情。在这种情况下,您将直接使用 QThread 创建自定义行为。使用 QThreadPool “启动” QRunnable 类似于为池中的可用线程排队该任务。而启动 QThread 实际上会分配一个新的 OS 线程并执行它。

线程池将使用 QRunnable 实例的工作队列管理有限数量的线程。当一个线程可用时,它将被分配一个 QRunnable 来处理。如果您将 QThreadPool 与 QRunnable 一起使用,则不需要显式创建任何 QThread 实例。请注意,在 QRunnable 实例中使用时,您仍必须确保共享资源是同步的(例如,与 QMutex、QMutexLocker、QReadWriteLock、QSemaphore 和/或 QWaitCondition)同步。

关于multithreading - 线程,QRunnable 和 QThreadPool,我无法详细介绍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316345/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com