为什么GUI框架都使用单线程
来源:互联网 发布:淘宝蓝海产品 编辑:程序博客网 时间:2024/04/28 14:56
主要原因是多线程会导致死锁
死锁场景1
GUI框架需要处理两方面的事情
1、根据业务代码绘制UI界面
2、接收用户输入,分派给业务代码
对每个GUI对象,绘制UI界面时,访问路径是业务代码-GUI框架-系统;响应事件时,访问路径是系统-GUI框架-业务代码。
完全相反的访问顺序,会导致同时访问GUI对象时加锁顺序不一致,进而导致死锁。
死锁场景2
MVC模式,Controller可以更新Model,触发通知给View;也可以通过View访问Model。
相反的访问顺序,会导致加锁顺序不一致,进而导致死锁
参考http://zhidao.baidu.com/question/936455181792899492.html
附:
第一次被人问到的时候第一反应觉得是死锁,但没想出来死锁场景
第二反应觉得是性价比不高:当时没考虑GUI框架需要处理用户输入,想的是绘制UI时的性能并不能通过多线程加强,多线程还有同步问题。收益小代价大。
毕竟GPU的绘图性能比多核CPU都强大的多,绘图部分的代码肯定是调用GPU做并行编程,CPU部分多线程是无法提高绘图效率的。
0 0
- 为什么GUI框架都使用单线程
- 为什么说GUI是单线程化的
- 为什么说GUI是单线程化的
- 为什么javascript是单线程?
- 为什么javascript是单线程?
- 为什么javascript是单线程?
- 为什么JavaScript是单线程?
- 为什么JavaScript是单线程?
- Redis为什么是单线程
- 单线程单元(STA)线程都应使用泵式等待基元
- Redis为什么使用单进程单线程方式也这么快
- Redis 为什么使用单进程单线程方式也这么快
- Redis为什么使用单进程单线程方式也这么快
- Redis为什么使用单进程单线程方式也这么快?
- Redis为什么使用单进程单线程方式也这么快
- 10033---Redis 为什么使用单进程单线程方式也这么快
- Redis为什么使用单进程单线程方式也这么快
- Redis为什么使用单进程单线程方式也这么快
- 黑马程序员_Java入门及基础语法上
- Maven学习 (四) 使用Nexus搭建Maven私服
- HDU 3342 Legal or Not(强连通)
- Maven学习 (五) Elipse中发布一个Maven项目到Tomcat
- Maven学习 (六) 搭建多模块企业级项目
- 为什么GUI框架都使用单线程
- Oracle Coherence中文教程十二:配置高速缓存
- Cache和Buffer的区别
- 用 Maven 做项目构建【总结】
- maven常见问题归纳
- oj汇总
- HDU 3339 In Action(最短路+DP)
- 欢迎使用CSDN-markdown编辑器
- Maven学习 (七) 自己动手编写Maven插件