网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月04日漏签0天
c++吧 关注:644,869贴子:2,117,102
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 36回复贴,共1页
<<返回c++吧
>0< 加载中...

请教一下关于多线程更新UI的问题

  • 只看楼主
  • 收藏

  • 回复
  • 贴吧用户_0QtNXay
  • ^
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
多线程更新UI的主要问题在于子线程访问UI控件时可能会与UI线程冲突,同时访问该控件,导致出现无法预料的错误。
从而大多都是采用消息的方式来避免这个问题,但是这种方式太过麻烦,需要制定各种消息协议之外,还需要重写UI的消息处理函数,且可复用性极低。那么可不可以采用重载paint函数,在里面加锁的方式来实现呢?例如:
UI界面:
void onPaint()
{
lock();
Base::onPaint();
unlock();
}
多线程中
ui.lock();
ui->lb->text = "...";
ui.unlock();
或者有更好的方法?
@LH_Mouse_Ex @幻の上帝 @sunchy12345678


  • snowrenmm520
  • ?:
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
给主线程发消息


2025-12-04 12:44:00
广告
不感兴趣
开通SVIP免广告
  • q68257962
  • ,
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
当然可以了,不过修改了某些东西的时候记得调用invalidate。
这种技巧更适用于快速刷图,不适合用于控件更新,未见得就比post消息好用。


  • 贴吧用户_0JNJWtE684
  • <<
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
> 多线程更新UI的主要问题在于子线程访问UI控件时可能会与UI线程冲突,同时访问该控件,导致出现无法预料的错误。
你这里想用非 UI 的线程去操作 UI 就是最大的问题。


  • 低温居士
  • <
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
今天华为P9被偷了,英语教授被我气走了,北通X1被玩坏了,OPPO R9也不见了 我对不起大家我是广告界的耻辱 ,等等,我还有魅蓝3S 楼下发


  • 幻の上帝
  • ->*
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你用的什么库需要“重写UI的消息处理函数”?


  • 135三硝基甲苯_
  • &
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不明


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 36回复贴,共1页
<<返回c++吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示