以前曾提出过密切相关的问题:
但是这些问题的答案仍然让我在某些方面不清楚.
第一个问题的提问者询问多线程是否有助于提高性能,而回答者大多说它不会,因为GUI不太可能成为现代硬件上2D应用程序的瓶颈.但在我看来,这是一个偷偷摸摸的辩论策略.当然,如果您仔细构建了应用程序,除了UI线程上的UI调用之外什么都不做,那么您将不会遇到瓶颈.但这可能需要大量工作并使您的代码更复杂,如果您有更快的内核或可以从多个线程进行UI调用,那么可能不值得这样做.
一个普遍提倡的架构设计是让视图组件没有回调,除了他们的后代之外不需要锁定任何东西.在这样的架构下,你不能让任何线程使用每个对象的锁来调用视图对象上的方法,而不用担心死锁吗?
我对UI控件的情况不太自信,但只要它们的回调仅由系统调用,为什么它们会导致任何特殊的死锁问题?毕竟,如果回调需要做任何耗费时间,他们将委托给另一个线程,然后我们回到多线程的情况.
如果您可以阻止UI线程,您将获得多线程UI的多少好处?因为异步的各种新兴抽象实际上允许你这样做.
我所看到的几乎所有讨论都假定使用手动锁定来处理并发性,但人们普遍认为手动锁定是在大多数情况下管理并发性的一种不好的方法.当我们考虑专家建议我们使用更多的并发原语(如软件事务内存)或避免共享内存支持消息传递(可能具有同步,如go)时,讨论如何改变?