何时应使用多线程?如果不同的线程执行相互独立的任务,多线程会是有益的吗?
2022-08-31 15:02:08
这是我在昨晚被拒绝的面试中唯一无法回答的两个问题。
这是我在昨晚被拒绝的面试中唯一无法回答的两个问题。
问:何时应使用多线程?
答:“你的问题很宽泛。很少有非平凡的系统,只需一个线程即可简单,快速,可靠地满足功能。例如:[挑选目标公司销售的典型系统,并挑选出其功能的几个方面,这些方面可以更好地线程化 - 繁重的CPU,通信,多用户 - 只需挑选出可能的东西并解释]。
问:如果不同的线程执行相互独立的任务,多线程处理是否有利?
答:“这取决于你所说的'执行任务'是什么意思。如果线程以并发方式处理相互独立的数据,多线程处理肯定是有益的 - 它降低了对锁的要求,并且死锁的概率随着锁的数量以超线性方式增加。OTOH,线程执行相同的代码没有问题,这是安全的,非常普遍。
如果要在不“阻塞”流的情况下执行繁重操作,则应使用多线程处理。
UI 中的示例,其中在后台线程中执行繁重处理,但 UI 仍处于活动状态。
如果线程执行互斥任务,则这是最好的,因为线程之间不需要同步的开销