并发模型之——基本概念
? ? ?從很久之前在學(xué)校到現(xiàn)在我們編程的時(shí)候經(jīng)常都有聽說到并發(fā)編程,偶爾也會(huì)聽到說并行,但我們很多人其實(shí)都不太清除并發(fā)與并行具體的區(qū)別在哪;我們剛開始學(xué)習(xí)編程語言的時(shí)候我相信我們寫的都是串行程序,一步接著一步來,可以說這比并發(fā)程序更不容易出錯(cuò),但在性能上要遠(yuǎn)不如并發(fā);還有一種并發(fā)具有很強(qiáng)容錯(cuò)性:分布式程序,分布式程序也算是并發(fā)程序,還可以具有很強(qiáng)的容錯(cuò)性,可以分開部署;
? ? ?并發(fā)與并行有著本質(zhì)上的區(qū)別。
? ? ?并發(fā)指程序在同一時(shí)間只能做一個(gè)操作,但是可以在不同的時(shí)間點(diǎn)()做多個(gè)操作;
? ? ?如:人是一個(gè)多線程的物種,只有你一個(gè)人的時(shí)候你開啟多線程“一邊炒菜,一邊玩iPad”,但其實(shí)在某一時(shí)間點(diǎn),人只可以做一件事,當(dāng)我們翻炒菜的時(shí)候不可能還在玩iPad,當(dāng)我們?cè)谕鎖Pad的時(shí)候不可能還能夠翻炒菜,只有我們不在翻炒的時(shí)候才能夠玩iPad,只有我們放下手中的iPad的時(shí)候才能夠翻炒,但從時(shí)間概念上看我們還是在邊炒菜邊玩iPad;這樣炒出來的菜可能不好吃,哈哈,就如并發(fā)編程一樣存在資源的競(jìng)爭(zhēng),這里競(jìng)爭(zhēng)的資源是手、眼睛,在計(jì)算機(jī)里是CPU,處處存在危機(jī),一不小心就燒焦了,哈哈!
? ? ?并行指在同一個(gè)時(shí)間點(diǎn)可以做幾個(gè)相同的操作或幾個(gè)不相同的操作;
? ? ?如:現(xiàn)在家有你和你女朋友兩個(gè)人,這個(gè)時(shí)候就不用你炒菜了,在你女朋友炒菜的時(shí)候你就可以嗶哩啪啦的玩iPad了,等你女朋友做好飯就你可以吃了(不是好男人);就如現(xiàn)在很多計(jì)算機(jī)中都有多個(gè)CPU,我們可以寫出比并發(fā)性能更高可以同時(shí)跑在多個(gè)CPU上的程序,但前提是你要有條件(多個(gè)CPU的計(jì)算機(jī));
并發(fā)不是并行,有時(shí)候并行也是并發(fā),有時(shí)候只是并行不是并發(fā);只有當(dāng)并行從整體上看是多個(gè)任務(wù)時(shí)才也是并發(fā),但并行只是一個(gè)任務(wù)的時(shí)候那只是并行;
這個(gè)系列說的只是編程中的并發(fā)模型,可能有時(shí)候也會(huì)談到并行,但重點(diǎn)是并發(fā)模型;
?
這系列文章主要將會(huì)談?wù)摰竭@么幾個(gè)并發(fā)模型:線程與鎖模型、Actor模型、Go的CSP模型等;
?文章首發(fā)地址:Solinx
http://www.solinx.co/archives/175
轉(zhuǎn)載于:https://www.cnblogs.com/softlin/p/4467793.html
總結(jié)
以上是生活随笔為你收集整理的并发模型之——基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Yii2.0 对数据库 查询的一些简单的
- 下一篇: [转]淘宝下单高并发解决方案