共享资源的方法
2018-2-10
一、问题说明
某通信卡,有n个通道,本想程序1使用通道1通信,程序2使用通道通信……,但板卡句柄只能独占打开,资源是板卡级的,不是通道级的,颗粒太粗了,咋办?
二、方案
有如下两种方案:
分层实现,比如服务端+客户端,当然这两种形态都可以集成到一个程序中,首先启动的进程充当服务端+客户端,后面的进程就是客户端。进程之间的通信传统的方式有文件映射、共享内存、匿名管道、命名管道、邮件槽、剪贴板、动态数据交换、对象连接与嵌入、动态连接库、远程过程调用、NetBios函数、套接字通信、WM_COPYDATA消息等几种,分布式架构首选套接字,单机首选共享内存,不细说了。当然也有封装好的库,开源的、免费的、商业的,各种各样的,但基本都是上述技术的封装和优化。我曾经基于套接字的方案实现过周立功can总线卡的共享,因此该方法对我而言算是一种熟悉的方法。
句柄复制,基于DuplicateHandle()函数,多个程序共享板卡句柄,分层实现的方法花销太大,且肯定有一定的延时,延时还不确定,实时性差了些,因此感觉这种方式最合适,且已有不少人用该方法实现了串口的共享,因此还是具备可行性的。
三、实现及验证
年前还有一天半班,就看我心情了,是玩游戏呢还是玩游戏呢,呵呵。
参考:
https://user.qzone.qq.com/359462189/blog/1492308044
https://user.qzone.qq.com/359462189/blog/1494160630