发明名称 VxWorks多任务同步与通信方法
摘要 本发明公开了一种VxWorks多任务同步与通信方法,包括:创建MTLInitialize对象对多任务运行环境进行初始化;创建MTLThread对象将对多任务的操作进行封装;创建MTLMutex对象和MTLRecursiveMutex对象对信号量进行封装,创建MTLMonitor对象对消息队列进行封装,创建MTLSynchronized对象对信号量和消息队列进行统一管理,为用户提供统一的接口和用法;利用所述统一的接口和用法实现多任务的同步与通信。本发明利用C++类封装的方法对VxWorks的消息队列和信号量进行封装,轻松地实现多任务之间的同步和通信,大大降低了多任务协作的难度。
申请公布号 CN101872317B 申请公布日期 2012.12.26
申请号 CN201010230519.0 申请日期 2010.07.16
申请人 山东中创软件工程股份有限公司;山东中创软件商用中间件股份有限公司 发明人 王凯;刘江宁
分类号 G06F9/52(2006.01)I;G06F9/54(2006.01)I 主分类号 G06F9/52(2006.01)I
代理机构 北京集佳知识产权代理有限公司 11227 代理人 逯长明
主权项 一种VxWorks多任务同步与通信方法,其特征在于,包括:创建MTLInitialize对象对多任务运行环境进行初始化;创建MTLThread对象将对多任务的操作进行封装,其中所述对多任务的操作包括:任务创建、任务运行、任务暂停和任务销毁;创建MTLMutex对象和MTLRecursiveMutex对象对信号量进行封装,创建MTLMonitor对象对消息队列进行封装,创建MTLSynchronized对象对信号量和消息队列进行统一管理,为用户提供统一的接口和用法;其中,所述创建MTLMutex对象对信号量进行封装包括:在MTLMutex的构造函数中创建信号量,在MTLMutex的析构函数中删除信号量,在MTLMutex的lock函数中获取信号量,在MTLMutex的unlock函数中释放信号量;所述创建MTLRecursiveMutex对象对信号量进行封装包括:在MTLRecursiveMutex的构造函数中创建信号量,在MTLRecursiveMutex的析构函数中删除信号量,在MTLRecursiveMutex的lock函数中获取信号量,在MTLRecursiveMutex的unlock函数中释放信号量;所述创建MTLMonitor对象对消息队列进行封装包括:在MTLMonitor的构造函数中创建消息队列,在MTLMonitor的析构函数中删除消息队列,在MTLMonitor的wait函数中从消息队列获取消息,在MTLMonitor的notify函数中向消息队列发送消息;所述创建MTLSynchronized对象对信号量和消息队列进行统一管理,为用户提供统一的接口和用法包括:在MTLSynchronized的构造函数中获取信号量和/或从消息队列中获取消息,在MTLSynchronized的析构函数中释放信号量和/或向消息队列中发消息,在MTLSynchronized的成员函数中实现对信号量或消息队列的其它操作;利用所述统一的接口和用法实现多任务的同步与通信,包括:通过调用MTLMutex和MTLRecursiveMutex类的lock和unlock函数进行多任务之间的同步;通过调用MTLMonitor类的wait和notify函数实现多任务之间的通信;通过定义MTLSynchronized类对象实现多任务的同步与通信;其中,所述通过定义MTLSynchronized类对象实现多任务的同步与通信包括:MTLSynchronized的构造函数调用其成员变量MTLMonitor类对象的wait函数以及MTLMutex和MTLRecursiveMutex类对象的lock函数,获取信号量或从消息队列中获取消息;MTLSynchronized的析构函数中调用其成员变量MTLMonitor类对象的notify函数以及MTLMutex和MTLRecursiveMutex类对象的unlock函数,释放信号量和向消息队列发送消息;MTLSynchronized的成员函数实现对信号量和消息队列的其它操作。
地址 250014 山东省济南市千佛山东路41-1号