漫谈并发

Posted 久光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了漫谈并发相关的知识,希望对你有一定的参考价值。

      关于并发,百科中给出的精准的定义:“ 在计算机科学中,并行性(英语:Concurrency)是指在一个系统中,拥有多个计算,这些计算有同时执行的特性,而且他们之间有着潜在的互动。因此系统可进行的执行路径会有相当多个,而且结果可能具有不确定性。并发计算可能会在具备多核心的同一个晶片中复合运行,以优先分时线程在同一个处理器中执行,或在不同的处理器执行”。这里强调一下,“并发”不是“并行”,或者说“并发”仅仅是“并行”的一个子集,具有并行的“表面特性”,然而概念上是不同的,可以用下图简单说明一下:

技术分享

并发的有点就不赘述了,主要想介绍一下并发编程相关的知识点。并发常规做法主要有:多进程、单进程多线程、多路复用等,无论哪种方案都存在资源竞争问题,以多线程为例,介绍一下如何保证并发安全性问题,传统的手段:锁、原子操作等,当然传统的手段很难保证开发效率,于是有涌现了很多更高级的并发方案,如Actor、CSP并发模型等,下面简单介绍一下。

一.传统的“锁”机制

     前辈们为了做高性能并发也是费尽苦心了,提出了各种锁来保证并发的效率和安全性,常见的锁:互斥锁(Mutex)、信号量(Seamphore)、读写锁(RWLock)、条件变量(Cond)、临界区(Critical Section)

以上是关于漫谈并发的主要内容,如果未能解决你的问题,请参考以下文章

漫谈并发编程:线程之间的协作

融云开发漫谈:你是否了解Go语言并发编程的第一要义?

漫谈使用Redis作为高速缓存

漫谈死锁

NoSQL漫谈

多线程漫谈