全国咨询热线:400-618-4000

C/C++知识点:QSharedMemory学习

更新时间:2018年01月05日11时10分 来源:传智播客

I. 研究来由

在屏幕共享项目里需要用到共享内存,但是之前对QSharedMemory实在不熟悉,因此在Mac上使用了mmap,而windows系统使用了CreateFileMapping。既然QT提供了跨平台共享内存机制,那么还是研究研究吧。

II. 注意事项

QSharedMemory虽然是跨平台的进程间内存共享方案,但是在不同的平台也是有不同的行为的,主要的区别是:

· windows平台下,所有的进程退出后,即使进程crash,共享内存对象也会被内核销毁。

· unix平台下,如果有进程crash,导致没有调用到QSharedMemory的析构函数的话,共享内存对象不会被内核销毁。

以上两句是看QT文档所得,英文水平有限,不一定正确,请验证

setNativeKey这种函数,会导致lock失败,这意味着QT的共享机制被破坏了,所以还是不用了吧。

III. 演示代码


本文版权归传智播客C/C++学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客C/C++学院
首发:http://www.itcast.cn/c/