多處理
多處理也稱為進(jìn)程,進(jìn)程是一個在自己的內(nèi)存空間中運(yùn)行的獨(dú)立程序。
每個進(jìn)程都有自己的地址空間、代碼、數(shù)據(jù)、堆棧。
進(jìn)程之間的通信需要IPC機(jī)制(管道、消息隊列、共享內(nèi)存、套接字)。
何時使用
你想要隔離(一個進(jìn)程崩潰不會影響另外的進(jìn)程)。
嵌入式示例:與通信服務(wù)分開運(yùn)行傳感器守護(hù)程序,這樣它們就不會干擾。
多線程
線程是流程中的輕量級執(zhí)行單元。
進(jìn)程中的所有線程共享相同的內(nèi)存空間(代碼、數(shù)據(jù)、堆),但每個線程都有自己的堆棧和寄存器。
線程之間的通信更容易(它們直接共享內(nèi)存),但需要同步(互換、信號)來避免競賽條件。
何時使用
你希望在一個應(yīng)用程序中進(jìn)行并行嗎?
嵌入式示例:一個線程讀取傳感器數(shù)據(jù),另一個線程處理MQTT通信,另一個線程刷新日志——所有這些都在同一應(yīng)用程序中。
關(guān)鍵區(qū)別
過程=繁重,孤立,創(chuàng)建速度較慢,更安全。
線程=輕、快速、共享內(nèi)存,但風(fēng)險更大(壞線程可能會損壞共享數(shù)據(jù))。
結(jié)論
在嵌入式Linux中,進(jìn)程是具有自身內(nèi)存空間的獨(dú)立程序,而線程是共享相同內(nèi)存的進(jìn)程中的輕量級單元。當(dāng)需要隔離時,我們會使用多個進(jìn)程,例如將傳感器服務(wù)和通信服務(wù)分開。當(dāng)我們需要任務(wù)共享內(nèi)存并在同一應(yīng)用程序中并發(fā)運(yùn)行時,我們會使用線程,例如讀取傳感器和并行處理網(wǎng)絡(luò)通信。
-
嵌入式
+關(guān)注
關(guān)注
5198文章
20442瀏覽量
333980 -
Linux
+關(guān)注
關(guān)注
88文章
11758瀏覽量
219009 -
進(jìn)程
+關(guān)注
關(guān)注
0文章
211瀏覽量
14532
原文標(biāo)題:嵌入式Linux,多線程與多處理有何不同?
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
【瑞薩RA × Zephyr評測】多線程和看門狗
解析Linux的進(jìn)程、線程和協(xié)程
屏蔽機(jī)房建設(shè)圖解,與非屏蔽機(jī)房有何區(qū)別?
多線程的系統(tǒng)
Linux多線程對比單線程的優(yōu)勢
在物聯(lián)網(wǎng)設(shè)備面臨的多種安全威脅中,數(shù)據(jù)傳輸安全威脅和設(shè)備身份安全威脅有何本質(zhì)區(qū)別?
rt-thread studio 如何進(jìn)行多線程編譯?
線路板鍍金與沉金有何區(qū)別?
【HZ-T536開發(fā)板免費(fèi)體驗】—— linux創(chuàng)建線程
如何在 MA35 系列微處理器 (MPU) 上開發(fā) AMP(非對稱多處理)應(yīng)用程序?
TC377配置SMU FSP時,如何配置頻率參數(shù);三種模式有何區(qū)別,配置上有何區(qū)別?
多線程的安全注意事項
工控一體機(jī)多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復(fù)雜流程高效協(xié)同密碼
一種實(shí)時多線程VSLAM框架vS-Graphs介紹
多線程與多處理有何區(qū)別
評論