何时应使用多线程?如果不同的线程执行相互独立的任务,多线程会是有益的吗?

2022-08-31 15:02:08

这是我在昨晚被拒绝的面试中唯一无法回答的两个问题。


答案 1

问:何时应使用多线程?

答:“你的问题很宽泛。很少有非平凡的系统,只需一个线程即可简单,快速,可靠地满足功能。例如:[挑选目标公司销售的典型系统,并挑选出其功能的几个方面,这些方面可以更好地线程化 - 繁重的CPU,通信,多用户 - 只需挑选出可能的东西并解释]。

问:如果不同的线程执行相互独立的任务,多线程处理是否有利?

答:“这取决于你所说的'执行任务'是什么意思。如果线程以并发方式处理相互独立的数据,多线程处理肯定是有益的 - 它降低了对锁的要求,并且死锁的概率随着锁的数量以超线性方式增加。OTOH,线程执行相同的代码没有问题,这是安全的,非常普遍。


答案 2

如果要在不“阻塞”流的情况下执行繁重操作,则应使用多线程处理。
UI 中的示例,其中在后台线程中执行繁重处理,但 UI 仍处于活动状态。

如果线程执行互斥任务,则这是最好的,因为线程之间不需要同步的开销