什么是分布式 c 如何并行編程?
c 如何并行編程?1. C語言沒有特殊的并行編程模式,但可以模擬多線程、多進(jìn)程的并行編程。2例如,在Linux中,可以使用fork函數(shù)調(diào)用新進(jìn)程。Fork函數(shù)是計算機(jī)程序設(shè)計中的一個分支函數(shù)。返回值
c 如何并行編程?
1. C語言沒有特殊的并行編程模式,但可以模擬多線程、多進(jìn)程的并行編程。2例如,在Linux中,可以使用fork函數(shù)調(diào)用新進(jìn)程。Fork函數(shù)是計算機(jī)程序設(shè)計中的一個分支函數(shù)。返回值:如果調(diào)用成功一次,則返回兩個值,子進(jìn)程返回0,父進(jìn)程返回子進(jìn)程標(biāo)志;否則出錯返回-1。fork函數(shù)將正在運(yùn)行的程序分成兩個(幾乎)相同的進(jìn)程,每個進(jìn)程從代碼的相同位置啟動一個線程。兩個進(jìn)程中的線程繼續(xù)執(zhí)行,就像兩個用戶同時啟動應(yīng)用程序的兩個副本一樣。函數(shù)原型PID?t fork(void)(PID?t是一個宏定義,其本質(zhì)是int在include<sys/types中定義。H>)返回值:如果調(diào)用一次成功,則返回兩個值,子進(jìn)程返回0,父進(jìn)程返回子進(jìn)程ID;否則返回-1函數(shù),表示現(xiàn)有進(jìn)程可以調(diào)用fork函數(shù)創(chuàng)建新進(jìn)程。fork創(chuàng)建的新進(jìn)程稱為子進(jìn)程。fork函數(shù)被調(diào)用一次并返回兩次。兩個返回的唯一區(qū)別是子進(jìn)程返回值0,父進(jìn)程返回子進(jìn)程ID。子進(jìn)程是父進(jìn)程的副本,它將獲取父進(jìn)程的數(shù)據(jù)空間、堆、堆棧和其他資源的副本。注意,子進(jìn)程持有上述存儲空間的“副本”,這意味著父進(jìn)程和子進(jìn)程不共享存儲空間。UNIX將父進(jìn)程的地址空間內(nèi)容復(fù)制到子進(jìn)程,因此子進(jìn)程有一個獨(dú)立的地址空間。在不同的UNIX(like)系統(tǒng)中,無法確定子進(jìn)程還是父進(jìn)程在fork之后首先運(yùn)行,這取決于系統(tǒng)的實(shí)現(xiàn)。因此,在移植代碼時不應(yīng)該對此進(jìn)行任何假設(shè)。