QT 主线程 优化 卡顿 主线程上的同步重活 防重入:进行中直接 return,避免连点双开。 把「一次性任务」收到 ThreadPoolExecutor(max_workers=2~3),限制峰值线程数

系统排查主线程上的同步重活(扫盘、网络、大列表等),再逐项优化。

已排查并优化主线程重活,卡顿应明显减轻。

已移出主线程

  • 授权校验(原先最长可卡到网络超时)
  • 关 Chrome(wait_procs
  • 启服务前扫浏览器路径
  • MAC 网卡枚举
  • 启动时 find_chrome / 日志 / 采集页结构

减轻主线程探测

  • 仪表盘先画骨架,CDP/端口走异步刷新(切首页不再同步探测)
  • Chrome / 运行态结果短缓存(~1.2s),按钮刷新只探测一次
  • 切日志/采集页延后到下一事件循环

保留在主线程的轻量操作

  • 读已缓存配置、画 UI、页内进度条(浏览器设置扫描仍在后台)

 

 

 

  1. collected_fetch_* 去重:同一 proxy_key+data_key 已在拉取时忽略新请求,避免连点/切页叠线程。
  2. licence_verify / browser_resolve / chrome_close 防重入:进行中直接 return,避免连点双开。

 

  • 把「一次性任务」收到 ThreadPoolExecutor(max_workers=2~3),限制峰值线程数; 

 

蓉华教育C++系列:QT线程

 

默认情况下我们在代码中创建的对象都属于主线程,这个对象的槽函数在调用的时候,占用的都是主线程的时间,

1、进行耗时操作时,如果在UI线程(主线程)里面进行耗时操作,界面会不响应用户操作,产生卡界面的效果   那天我们使用事件循环解决,今天就用线程解决。

 

2、提升程序性能,现在的电脑一般都是多核CPU,多线程并行处理事务,可以大大提升程序的性能。

【Qt基本功修炼】Qt线程的两种运行模式

QThread有两种工作模式,即

  • 消息循环模式
  • 无消息循环模式

 

 

 

QThread Class | Qt Core | Qt 6.11.1

 

 

A QThread object manages one thread of control within the program. QThreads begin executing in run(). By default, run() starts the event loop by calling exec() and runs a Qt event loop inside the thread.

 

 

enum QThread::Priority

该枚举类型表示操作系统应如何调度新创建的线程。

常量说明
QThread::IdlePriority 0 仅在没有其他线程运行时调度。
QThread::LowestPriority 1 调度频率低于 LowPriority。
QThread::LowPriority 2 比 NormalPriority(正常优先级)更少调度。
QThread::NormalPriority 3 操作系统的默认优先级。
QThread::HighPriority 4 比 NormalPriority(正常优先级)更频繁地调度。
QThread::HighestPriority 5 比 HighPriority(高优先级)更频繁地调度。
QThread::TimeCriticalPriority 6 尽可能频繁地调度。
QThread::InheritPriority 7 使用与创建线程相同的优先级。这是默认值。

 

posted @ 2026-07-20 15:51  papering  阅读(4)  评论(0)    收藏  举报