美文网首页
并发编程的挑战

并发编程的挑战

作者: 张于宴 | 来源:发表于2020-05-16 09:35 被阅读0次

并发编程的目的是为了让程序运行的更快,但是并不是启动更多的线程就能让程序最大限度地并发执行。会面临非常多的挑战


1.上下文切换

CPU通过给每个线程分配CPU时间片来实现多线程机制。当任务 执行一个时间片后会切换到下一个任务。但是在切换前会保存上一个任务的状态,以便下次切换回来这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就是一次上下文切换


2.死锁

两个线程互相等待对方释放锁,会引起死锁。

如何避免

避免一个线程同时获取多个锁

避免一个线程同时占用多个资源,尽量保证每个锁只占用一个资源

尝试使用定时锁,使用lock.tryLock(timeout)来替代

对于数据库锁,加锁和解锁必须在一个数据库链接里,否者会出现解锁失败的情况。


3.资源限制的挑战

资源限制是指在进行并发编程时,程序的执行速度受限于计算机硬件资源或者软件资源。

例如,服务器的带宽只有2Mb/s,某个资源的下载速度是1Mb/s,启动10个线程,下载速度也不会变成10Mb/s.

相关文章

网友评论

      本文标题:并发编程的挑战

      本文链接:https://www.haomeiwen.com/subject/uqhlohtx.html