多线程恐惧之一,在引入大量的互斥锁之后很多人下意识的认为这样会导致性能下降。
我认为这样的观点建立在两个方面第一点是认为自己的程序运行过程中没有等待性延时例如网络操作中常见的接收延迟和发送延迟,第二是把多线程中的互相等待造成的损耗评估的过于严重。
首先以mangoscors为例没有分线程时会出现很多情况长时间cpu占用过低客户端也在等待的情况,这种情况跟某个客户端的网络延迟有很深的关系随意分离几个线程之后这种情况得到的极大的改善,但因为互斥锁使用的并不严谨,每次占用锁的时间过长导致这样的划分并不能很细。这样在分了几个线程之后就导致了第二种情况的出现互斥锁相互等待的时间过长,性能提升的空间变得很小提升也很有限。
从这个例子来看
第一为了提高性能使用多线程是值得的尤其在面多多个连接的服务器当中,可以有效的平衡cpu波峰波谷带来的性能动荡。
第二在互斥锁的使用上要非常的严谨,尽可能的快速的使用共享区域。避免在两个运行的线程间直接的数据交换,多使用栈以达到尽快释放锁的目的等经验要大量运用。其任意单独互斥锁使用的时间越短性能提升的空间就会越大,达到以良好的数据交换次序换取性能的目地。
很多时候会让我想起一个人,虽然只有一次但那次因为她不断的鼓励让我做出了超越自我的成就和信心。这可能只是她平时为人的习惯但我再没有遇到过这样的人。现在虽然面临很多困难我的执着却只来源于我内心深处的阴暗,我像鞭策奴隶一样驱使着自己,多么希望有个人可以再一次让我不用考虑哪么多能够更加的自信。