【发布时间】:2009-04-13 04:01:31
【问题描述】:
http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html 认为多线程 GUI 框架是一个失败的梦想。非 GUI 框架呢?这个经验法则是否适用于所有事件驱动的框架?
这是引起我注意的文章中的一句话:
输入事件处理的问题在于它倾向于以与大多数 GUI 活动相反的方向运行。通常,GUI 操作从库抽象堆栈的顶部开始,然后“向下”运行。我在我的应用程序中操作一个由一些 GUI 对象表达的抽象概念,所以我从我的应用程序开始,调用高级 GUI 抽象,调用低级 GUI 抽象,调用丑陋的内脏工具包,然后进入操作系统。相反,输入事件从操作系统层开始,并逐渐“向上”分派到抽象层,直到它们到达我的应用程序代码。
现在,由于我们使用抽象,我们自然会在每个抽象中单独进行锁定。不幸的是,我们遇到了经典的锁排序噩梦:我们有两种不同类型的活动想要以相反的顺序获取锁。所以僵局几乎是不可避免的。
【问题讨论】:
标签: multithreading oop events