????????如果某個(gè)系統(tǒng)支持兩個(gè)或者多個(gè)動(dòng)作同時(shí)存在鸥咖,那么這個(gè)系統(tǒng)就是一個(gè)并發(fā)系統(tǒng)。如果某個(gè)系統(tǒng)支持兩個(gè)或者多個(gè)動(dòng)作同時(shí)執(zhí)行,那么這個(gè)系統(tǒng)就是一個(gè)并行系統(tǒng)希痴。并發(fā)系統(tǒng)與并行系統(tǒng)這兩個(gè)定義之間的關(guān)鍵差異在于"同時(shí)"這個(gè)詞掂碱。
? ? ? ? 在并發(fā)程序中可以同時(shí)擁有兩個(gè)或者多個(gè)線程怜姿。這意味著慎冤,如果程序在單核處理器上運(yùn)行疼燥,那么這兩個(gè)線程將交替的出入內(nèi)存。這些線程是同時(shí)存在的蚁堤,每個(gè)線程都處于執(zhí)行過(guò)程中的某個(gè)狀態(tài)醉者。如果程序能夠并行執(zhí)行,那么一定是運(yùn)行在多核處理器上披诗。此時(shí)程序中的每個(gè)線程都將分配到一個(gè)獨(dú)立的多核處理器上撬即,因此可以同時(shí)運(yùn)行。
? ? ? ? 并行概念是并發(fā)概念的一個(gè)子集呈队。也就是說(shuō)剥槐,你可以編寫一個(gè)擁有多個(gè)線程或者進(jìn)程的并發(fā)程序,但如果沒(méi)有多核處理器來(lái)執(zhí)行這個(gè)程序宪摧,那么久不能以并行的方式來(lái)運(yùn)行代碼粒竖。因此,凡是在求解單個(gè)問(wèn)題時(shí)涉及多個(gè)執(zhí)行流程的編程模式或者執(zhí)行行為都屬于并發(fā)編程的范疇几于。
? ? ? ? 你吃飯吃到一半蕊苗,電話來(lái)了,你一直吃完了以后才去接沿彭,說(shuō)明你不支持并發(fā)也不支持并行朽砰。
????????你吃飯吃到一半,電話來(lái)了喉刘,你停下來(lái)接了電話瞧柔,接完以后繼續(xù)吃飯,說(shuō)明你支持并發(fā)睦裳。
????????你吃飯遲到一半非剃,電話來(lái)了,你一邊打電話一邊吃飯推沸,說(shuō)明你支持并行备绽。
? ? ? ? 并發(fā)的關(guān)鍵是你有處理多個(gè)任務(wù)的能力,不一定要同時(shí)鬓催。
????????并行的關(guān)鍵是你有同時(shí)處理多個(gè)任務(wù)的能力肺素。
????????所以它們的關(guān)鍵點(diǎn)就是:是否是"同時(shí)" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
????????
????????