前言
- 起因
两个进程之间需要图片的传输,之前的程序会导致三次额外的文件IO - 过程
起初是部门老哥建议使用boost封装好的共享内存进行开发,其中也封装好了相应的queue和string类,用以存储图片数据,后来发现使用时,按boost的方法开辟的单个共享内存区域的大小过小,可能是自己使用的方式有所不对,网上查阅资料无果,故而放弃。
ps: 放一个boost共享内存的相关网址,算是在学习中看到的最好的一个,有需要的可以看一下
http://zh.highscore.de/cpp/boost/interprocesscommunication.html
思路
直接说结果吧,最后选择了消息队列来实现队列思维和锁
我这里用消息队列传递了shmid,也就是借助消息队列监听不同频道的消息,来直接传输,生产者传输我填充好的内存块,接收被消耗的内存块, 消费者等待接收被填充的内存块,发送取走数据的内存块