教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

C/C++知識點(diǎn):QSharedMemory學(xué)習(xí)

更新時間:2018年01月05日11時10分 來源:傳智播客 瀏覽次數(shù):

I. 研究來由

在屏幕共享項(xiàng)目里需要用到共享內(nèi)存,但是之前對QSharedMemory實(shí)在不熟悉,因此在Mac上使用了mmap,而windows系統(tǒng)使用了CreateFileMapping。既然QT提供了跨平臺共享內(nèi)存機(jī)制,那么還是研究研究吧。

II. 注意事項(xiàng)

QSharedMemory雖然是跨平臺的進(jìn)程間內(nèi)存共享方案,但是在不同的平臺也是有不同的行為的,主要的區(qū)別是:

· windows平臺下,所有的進(jìn)程退出后,即使進(jìn)程crash,共享內(nèi)存對象也會被內(nèi)核銷毀。

· unix平臺下,如果有進(jìn)程crash,導(dǎo)致沒有調(diào)用到QSharedMemory的析構(gòu)函數(shù)的話,共享內(nèi)存對象不會被內(nèi)核銷毀。

以上兩句是看QT文檔所得,英文水平有限,不一定正確,請驗(yàn)證

setNativeKey這種函數(shù),會導(dǎo)致lock失敗,這意味著QT的共享機(jī)制被破壞了,所以還是不用了吧。

III. 演示代碼


本文版權(quán)歸傳智播客C/C++學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客C/C++學(xué)院
首發(fā):http://metathetuscanyresort.com/c/
0 分享到:
和我們在線交談!