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

一、并发编程的挑战

作者: 潇泠雪枫 | 来源:发表于2018-10-16 22:51 被阅读0次

上下文切换

1.1多线程一定比单线程执行任务更快吗?

    不一定。因为线程创建、销毁以及上下文切换会消耗系统资源。

    上下文切换:CPU通过时间片分配算法来循环执行任务,在任务间切换时会保存上一个任务到状态,下次切换回该任务时会再加载这个任务到状态,任务从保存到再加载到过程就是一次上下文切换。

1.2 如何减少上下文切换?

    无锁并发编程、CAS算法、使用最少线程、使用协程。

    协程:协程概念协程图解


死锁

2.1 为什么会产生死锁?

产生死锁的原因:

    (1)竞争系统资源 (2)进程的推进顺序不当

产生死锁的必要条件:

    互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所                            占用。

    请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。

    不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。

    环路等待条件:在发生死锁时,必然存在一个进程--资源的环形链。

2.2 避免死锁到常见方法?

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

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

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

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


资源限制的挑战

3.1 什么是资源限制?

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

    硬件资源限制:网络带宽、硬盘读写速度和CPU的处理速度等。

    软件资源限制:数据库等连接数和 socket 连接数等。

相关文章

网友评论

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

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