购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 命令缓存设计

IRunDevice接口中的CommandCache属性是一个命令缓存器,可以把设备要发送的命令数据临时存储在命令缓存中,软件框架会通过调用GetSendBytes接口函数来提取命令缓存器中的命令数据,发送成功后会从缓存器中删除该命令数据;如果命令缓存器不存在任何命令数据,那么会调用GetRealTimeCommand接口函数来获得默认的命令数据,代码如下。

命令缓存器主要包括两部分:命令对象和命令缓存。命令对象是一个实体类,主要是对关键字、命令字节数组和优先级属性进行封装。命令缓存在获得命令对象时会对优先级进行判断,以便优先发送命令级别高的数据信息。命令对象代码如下。

命令缓存用于对命令对象进行管理,涉及增加、获得、删除命令对象等操作,其中包括读写互斥锁的应用,完整代码如下。

这里用到了ReaderWriterLock函数读写同步锁,用于同步对资源进行访问。在特定时刻,它允许多个线程同时进行读访问,或者允许单个线程进行写访问。ReaderWriterLock函数所提供的吞吐量比一次只允许一个线程的锁(如Monitor)更高。尽管我们对软件框架的性能要求并不太高,但是在设计的时候还是要保持一定的超前性。 4XJOSbdAC4TS8FAPAYkyk94oh9bunyGKITDOk0OipDB4Yq9lvOyqarYtvTU2nrvm

点击中间区域
呼出菜单
上一章
目录
下一章
×