当前位置: 首页 > news >正文

关于网站建设的报告广告推广平台网站

关于网站建设的报告,广告推广平台网站,做外贸要自己建网站吗,澳华装饰公司口碑怎么样1 简介 QThreadPool是Qt框架中的一个类,提供了一组工作线程池。该线程池自动管理一组工作线程,在线程可用时分配任务。使用线程池的主要优点是,它可以减少创建和销毁线程的开销,因为可以重复使用线程。 线程池设计用于场景中&am…

1 简介

QThreadPool是Qt框架中的一个类,提供了一组工作线程池。该线程池自动管理一组工作线程,在线程可用时分配任务。使用线程池的主要优点是,它可以减少创建和销毁线程的开销,因为可以重复使用线程。

线程池设计用于场景中,你有大量短暂任务需要并发运行。例如,如果您有一个需要执行大量I/O绑定或CPU绑定任务的GUI应用程序,可以使用线程池在后台运行这些任务,而不会阻塞GUI线程。

要使用QThreadPool,您需要创建一个从QRunnable派生的任务类,并实现run()方法。然后,您创建任务类的实例,并使用start()方法将其添加到线程池中。线程池将自动将任务分配给其中一个工作线程,并在后台运行任务。

除了基本的线程池功能外,QThreadPool还提供了优先级任务和设置最大并发线程数的支持。这在您需要确保在其他任务之前执行某些任务或限制并发线程数以避免超载系统

2 函数

静态公有函数
QThreadPool * globalInstance()

globalInstance() 是 QThreadPool 的静态函数,它返回一个指向全局 QThreadPool 单例对象的指针。全局 QThreadPool 对象是整个程序共享的,不需要手动创建。通过调用 globalInstance() 函数,可以在程序中访问到这个全局的 QThreadPool 对象,并通过它管理线程。

int activeThreadCount() const
获取线程池中当前活动的线程数。

void clear()
移除线程池中的所有任务,并删除已经设置了 runnable->autoDelete() 属性为 true 的任务,并销毁已经启动但尚未完成的线程。

bool contains(const QThread *thread) const
它用于检查线程池是否包含给定的线程。如果包含,则返回 true,否则返回 false。这个函数可以用于动态管理线程池中的线程,以确保线程池的效率和效果。

int expiryTimeout() const
void setExpiryTimeout(int expiryTimeout)
用于设置线程池中线程的超时时间。线程池会检查未使用的线程,并在它们在指定时间内未使用的情况下将它们视为已过期,并将其终止。这可以防止线程长时间占用线程池中的资源,并可以提高线程池的效率。

默认情况下,新创建的线程的超时时间为30000毫秒(30秒)。如果超时时间为负数,则新创建的线程不会过期,也就是说,它们不会在线程池被销毁之前退出。

请注意,在已经运行的线程上设置超时时间不会产生任何影响。仅新创建的线程会使用新的超时时间。因此,建议在创建线程池后立即设置超时时间,但在调用 start 函数之前。

int maxThreadCount() const
void setMaxThreadCount(int maxThreadCount)
此属性表示线程池使用的最大线程数。
注意:线程池将始终使用至少 1 个线程,即使maxThreadCount限制为零或负数。

void releaseThread()
它释放由之前调用 reserveThread 函数预留的线程。
在某些情况下,线程可能需要等待更多工作,此时调用 releaseThread 函数可以让该线程临时释放,从而允许其他线程继续执行。但是,当线程再次获得任务并继续处理时,应该再次调用 reserveThread 函数,以确保线程池能够正确维护 activeThreadCount。

void reserveThread()
reserveThread 函数是 QThreadPool 类中的一个函数,它用于预留一个线程。这个函数不会考虑当前的活动线程数量和最大线程数量,因此可以保证您可以预留一个线程。

在完成使用线程后,请调用 releaseThread 函数,以便将其重新用于其他任务。

请注意,使用此函数将永远增加活动线程的数量。这意味着通过使用此函数,activeThreadCount 函数可能返回一个大于 maxThreadCount 的值。

void setStackSize(uint stackSize)
uint stackSize() const
线程栈大小是指线程在执行任务时使用的内存空间的大小。

该函数的参数是栈的大小,以字节为单位。如果未指定栈的大小,则使用默认值。默认栈大小对于大多数程序应该足够,但是,如果您的程序需要更大的栈,则可以使用此函数调整栈大小。

void start(QRunnable *runnable, int priority = 0)
void start(std::function<void ()> functionToRun, int priority = 0)
void start(QRunnable *runnable, int priority = 0):该版本接收一个 QRunnable 对象作为参数。您可以将任务封装在 QRunnable 对象中,然后将该对象传递给 start 函数,以在线程池中运行该任务。参数 priority 表示任务的优先级,默认值为0,表示普通优先级。

void start(std::function<void ()> functionToRun, int priority = 0):该版本接收一个 std::function 对象作为参数。您可以将任务封装在该对象中,然后将该对象传递给 start 函数,以在线程池中运行该任务。参数 priority 表示任务的优先级,默认值为0,表示普通优先级。

// Using QRunnable
class MyTask : public QRunnable
{void run(){// Code to run in a thread}
};QThreadPool::globalInstance()->start(new MyTask());// Using std::function
QThreadPool::globalInstance()->start([]()
{// Code to run in a thread
});

bool tryStart(QRunnable *runnable)
如果在调用时没有可用的线程,那么这个函数不做任何操作并返回 false。否则,runnable 将立即使用一个可用的线程运行,此函数将返回 true。

请注意,如果 runnable->autoDelete() 返回 true,则线程池将拥有 runnable 的所有权,并且线程池在 runnable->run() 返回后将自动删除 runnable。如果 runnable->autoDelete() 返回 false,则 runnable 的所有权仍然归调用者所有。请注意,在调用此函数后更改 runnable 的自动删除将导致未定义的行为。
bool tryStart(std::function<void ()> functionToRun)
尝试保留一个线程来运行 functionToRun。

如果在调用时没有可用的线程,那么这个函数不做任何操作并返回 false。否则,functionToRun 将立即使用一个可用的线程运行,此函数将返回 true。

bool tryTake(QRunnable *runnable)
函数尝试从队列中删除指定的未启动的 Runnable。如果 Runnable 尚未启动,则返回 true,并且 Runnable 的所有权转移到调用者(即使 runnable->autoDelete() 返回 true)。否则返回 false。

注意:如果 runnable->autoDelete() 返回 true,则可能删除错误的 Runnable。这是 ABA 问题:原始的 Runnable 可能已经执行过并且已经被删除。内存被另一个 Runnable 重用,然后被删除。因此,我们建议仅在 Runnable 没有自动删除时调用此函数。

bool waitForDone(int msecs = -1)
函数等待所有线程退出,并删除线程池中的所有线程,最多等待 msecs 毫秒。如果所有线程都已删除,则返回 true;否则返回 false。如果 msecs 为 -1(默认值),则忽略超时(等待最后一个线程退出)。

http://www.hotlads.com/news/6421.html

相关文章:

  • 在黄石做政府网站关键词上首页的有效方法
  • 网站搭建培训学校佛山网站建设解决方案
  • 深圳 网站建设爱站网工具
  • 2003系统网站建设智推教育seo课程
  • 微网站建设制作设计google浏览器官方下载
  • 东至网站制作交换链接营销实现方式解读
  • 网页设计模板图片素材上海关键词优化按天计费
  • 帮黄色网站做推广今日国内新闻重大事件
  • 网站开发预算百度一下百度知道
  • 本地拖拽网站建设互联网推广怎么做
  • 网站建设电子书2022年热点营销案例
  • 建设网站的费用明细优秀网页设计作品
  • wordpress做淘宝客网站在线网站排名工具
  • 网站的积分系统怎么做的怎么找拉新推广平台
  • linux做网站服务器那个软件好百度关键词排名批量查询
  • 大学网站开发与管理课程心得体会搜索引擎营销成功的案例
  • 网站建设报价表模板百度竞价推广联系方式
  • 做网站 学php哪一部分今日国际新闻最新消息事件
  • 企业网站建设方案书 范本夫唯seo教程
  • 松江品划做企业网站怎样提高百度推广排名
  • 自己做的网站怎么实现结算功能上海网站排名优化公司
  • 做网络维护的公司有哪些seo搜索引擎优化心得体会
  • 福田网站建设方案广州市疫情最新
  • 本厂有大量手工活外发seo是怎么优化上去
  • 做互联网网站需要什么资质吗赣州网站建设公司
  • 带做骑传奇私服网站网站排名优化服务公司
  • 汽车网站建设流程短视频赚钱app软件
  • 今日国际新闻10则seo技术是什么
  • 凡科免费做的网站关于市场营销的培训课程
  • 行业网站程序百度广告官网