CN106055417A - 用于机器人操作系统的消息传输方法和装置 - Google Patents
用于机器人操作系统的消息传输方法和装置 Download PDFInfo
- Publication number
- CN106055417A CN106055417A CN201610390281.5A CN201610390281A CN106055417A CN 106055417 A CN106055417 A CN 106055417A CN 201610390281 A CN201610390281 A CN 201610390281A CN 106055417 A CN106055417 A CN 106055417A
- Authority
- CN
- China
- Prior art keywords
- memory block
- mark
- write
- amount
- mark amount
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000007717 exclusion Effects 0.000 claims description 64
- 230000005540 biological transmission Effects 0.000 claims description 52
- 230000008569 process Effects 0.000 description 17
- 230000006854 communication Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Automation & Control Theory (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Computation (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Manipulator (AREA)
- Numerical Control (AREA)
Abstract
本申请公开了用于机器人操作系统的消息传输方法和装置。所述方法的一具体实施方式包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。该实施方式实现了发送节点和接收节点互不干扰、有顺序地读写共享内存。
Description
技术领域
本申请涉及计算机技术领域,具体涉及计算机操作系统技术领域,尤其涉及用于机器人操作系统的消息传输方法和装置。
背景技术
机器人操作系统(ROS,Robot Operating System)由很多节点和话题构成,每个节点都是一个独立的进程,话题是节点之间建立连接的依据。节点分为两种:发送节点和接收节点,发送节点负责将处理完成的信息发送出去,接收节点负责接收发送节点发出的信息,并根据命令做出相应操作(有时一个节点即是发送者又是接收者)。当节点之间建立连接后,发送-接收节点通过共享内存的方式进行消息传输。
使用共享内存的方式进行传输通常是多个发送和接收节点同时使用同一段共享内存区。两个典型的问题是:1)当有发送节点正在向共享内存区写入数据时,有其他节点也对这段内存进行读写,这时发送节点可能被中途打断,导致异常退出;2)当有接收节点正在读取某段共享内存区时,恰好发送节点也对这块内存进行写入,接收节点将读到错误的信息,做出错误的处理结果,并下达错误的运行指令。所以如何同步这些节点进程,让他们互不干扰有顺序地读写共享内存就成为了一个要解决的问题。
发明内容
本申请的目的在于提出一种用于机器人操作系统的消息传输方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种用于机器人操作系统的消息传输方法,所述方法包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
在一些实施例中,所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。
在一些实施例中,所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。
第二方面,本申请提供了一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:接收节点接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
在一些实施例中,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据,包括:所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。
在一些实施例中,所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1,包括:所述接收节点在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;所述接收节点在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。
第三方面,本申请提供了一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:查找单元,配置用于循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;写入单元,配置用于将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;读取通知单元,配置用于在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
在一些实施例中,所述写入单元进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。
在一些实施例中,所述读取通知单元进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。
第四方面,本申请提供了一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:接收单元,配置用于接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;读取单元,配置用于当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;写入通知单元,配置用于读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
在一些实施例中,所述读取单元进一步配置用于:在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。
在一些实施例中,所述写入通知单元进一步配置用于:在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。
本申请提供的用于机器人操作系统的消息传输方法和装置,通过使用内存块标志量和数据互斥锁,有效地保证了内存块在同一时刻只能被一个发送节点写入或多个接收节点读取。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性系统架构图;
图2a是根据本申请的用于机器人操作系统的消息传输方法的一个实施例的流程图;
图2b是根据本申请的用于机器人操作系统的消息传输方法的又一个实施例的流程图;
图3是根据本申请的用于机器人操作系统的消息传输方法的一个应用场景的示意图;
图4a是图2a所示的用于机器人操作系统的消息传输方法的又一个实施例的流程图;
图4b是图2b所示的用于机器人操作系统的消息传输方法的又一个实施例的流程图;
图5a是根据本申请的用于机器人操作系统的消息传输装置的一个实施例的结构示意图;
图5b是根据本申请的用于机器人操作系统的消息传输装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的终端设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于机器人操作系统的消息传输方法或装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括无人驾驶车辆101、后台服务器106和网络105。网络105用以在无人驾驶车辆101和后台服务器106之间提供通信链路的介质。网络105可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
后台服务器106可以是提供各种服务的服务器,例如为无人驾驶车辆101提供在线地图的后台地图服务器。
无人驾驶车辆101上可以安装有采集设备102、103和车载控制器104。采集设备102、103可以通过各种通信方式(例如有线、无线通信链路或者光纤电缆等等)将采集的信息发送给车载控制器104。采集设备102、103可以是采集周围环境信息的各种电子设备,包括但不限于摄像头、雷达等等。车载控制器104采用改进的机器人操作系统,通过车内各节点的协同配合,将采集设备102、103采集的周围环境信息和后台服务器106提供的地图信息转化成控制信息,让汽车平稳精确地在道路上行驶。
需要说明的是,本申请实施例所提供的用于机器人操作系统的消息传输方法一般由车载控制器104执行,相应地,用于机器人操作系统的消息传输装置一般设置于车载控制器104中。
应该理解,图1中的采集设备、无人驾驶车辆和后台服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的采集设备、无人驾驶车辆和后台服务器。车载控制器也可以单独运行不需要后台服务器和网络。
继续参考图2a,示出了根据本申请的用于机器人操作系统的消息传输方法的一个实施例的流程200。所述的用于机器人操作系统的消息传输方法,包括以下步骤:
步骤201,发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块。
在本实施例中,用于机器人操作系统的共享消息传输方法运行于其上的电子设备(例如图1所示的车载控制器)使用共享内存的方式进行消息传输。其中,一个内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目。每个内存块都有一个编号,发送节点在写入数据前循环遍历内存段中所有内存块,通过内存块标志量来判断是否是允许被写的内存块。例如,内存块标志量的写入标识为0时表示此时可以写入,内存块标志量的写入标识为1时表示此时有发送节点正在写入。内存块标志量的读取标识指示的值的初始值是0,当有接收节点读取该内存块时,该值加1,当该接收节点读取完毕后,该值减1。可以有多个接收节点同时从同一内存块读取。
在本实施例的一些可选的实现方式中,内存段中还可以包括内存段标志量,用于存储上次写入数据的内存块的序号,下次查找可写入的内存块时可从该序号之后的内存块开始查找。
步骤202,发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据。
在本实施例中,发送节点在写入数据之前需要修改内存块的内存块标志量以锁定共享内存,此时其它发送节点或接收节点不会向该内存块写入数据或者从该内存块读取数据,这些节点可以互不干扰地顺序读写共享内存。
步骤203,发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
在本实施例中,发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入用于释放共享内存以供接收节点读取数据,退出所查找到的内存块并通知接收节点所查找到的内存块可读。例如,将内存块标志量的写入标识由1改为0以指示该内存块可写入。
本申请的上述实施例提供的方法通过在数据写入的过程中使用内存块标志量,使想要读取该内存块的接收节点进入等待状态,写入成功后才允许读取数据。
继续参考图2b,示出了根据本申请的用于机器人操作系统的消息传输方法的又一个实施例的流程200’。所述的用于机器人操作系统的消息传输方法,包括以下步骤:
步骤210,接收节点接收发送节点发送的内存块可读的通知后,判断内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入。
在本实施例中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目。在读取内存块中的数据前,接收节点收到发送节点发送的内存块可读的通知后通过检查内存块标志量判断是否有发送节点正在向内存中写入数据。若发现发送节点正在写入数据,进入等待状态,直到发送节点写完数据才允许读取。若没有发现存在正在写入数据的发送节点,或等待到发送节点将数据写完后进入就绪状态。
步骤211,当内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,接收节点将内存块的内存块标志量的读取标识所指示的值加1后从内存块读取数据。
在本实施例中,处于就绪状态的接收节点修改相应的内存块标志量,修改成功后读取内存中的数据。可以有多个接收节点同时读取同一个内存块中的数据。
步骤212,接收节点读取数据后将内存块的内存块标志量的读取标识所指示的值减1、退出内存块并通知发送节点内存块可写入。
在本实施例中,数据读取完毕后重置内存块标志量,退出内存块,并通知发送节点该内存块可写。
本申请的上述实施例提供的方法通过在数据读取的过程中使用内存块标志量,保证了该内存块不会被其他发送节点访问,从而保证了读取信息的同步。
继续参见图3,图3是根据本实施例的用于机器人操作系统的消息传输方法的应用场景的一个示意图。在图3的应用场景中,发送节点遍历查找到可写的内存块2(内存块标志量的写入标识指示可写入并且读取标识指示0值),将内存块的标志量修改为正在写入以锁定共享内存,然后将数据写入内存块2中,将内存块2的标志量重置为可写入以释放共享内存,退出内存块2并通知接收节点内存块2可以读取。在发送节点对内存块2进行操作的同时,接收节点对别的内存块中的数据进行读取。接收节点收到内存块5可读取的通知后判断内存块5的内存块标志量的写入标识是否指示可写入,如果可写入则将内存块5的内存块标志量的读取标识所指示的值加1后再读取内存块5中的数据,数据读取完毕后将内存块5的内存块标志量的读取标识所指示的值减1以释放共享内存。
申请的上述实施例提供的方法通过内存块标志量保证了内存块在同一时刻只能被一个发送节点写入或若干个接收节点读取,从而达到了同步发送-接收节点的目的。
进一步参考图4a,其示出了用于机器人操作系统的消息传输方法的又一个实施例的流程400。该用于机器人操作系统的消息传输方法的流程400,包括以下步骤:
步骤401,发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块。
该步骤与步骤201基本相同,在此不再赘述。
步骤402,对所查找到的内存块的内存块标志量上数据互斥锁。
在本实施例中,发送节点在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁。
数据互斥锁的作用是保证内存块标志量的正常使用,由于修改内存块标志量属于非原子操作,所以在内存块标志量被一个节点修改的过程中有可能被其他节点使用,这就会导致读写异常,产生错误的指令。为了保证内存块标志量在使用的时候不被其他节点篡改,引入数据互斥锁方法。
在发送-接收节点准备修改内存块标志量时,对这段代码使用数据互斥锁操作。在同一时刻只能有一个节点掌握数据互斥锁,拥有上锁状态的节点能够对共享内存进行操作。若其他节点希望访问一个已经上锁了的共享内存,则该节点会被挂起,直到上锁的节点释放掉数据互斥锁为止。等到掌握数据互斥锁的节点修改内存块标志量将数据互斥锁释放后,挂起的节点才能得到访问共享内存的权利,访问时同样进行上锁操作,防止其他节点篡改内存块标志量。
步骤403,将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入。
在本实施例中,在将所查找到的内存块的内存块标志量上数据互斥锁后再对该内存块标志量进行修改,将其修改为正在写入。
步骤404,释放数据互斥锁。
在本实施例中,修改了内存块标志量之后释放数据互斥锁。
步骤405,写入数据。
在本实施例中,内存块标志量修改为正在写入之后向该内存块写入数据。
步骤406,对所查找到的内存块的内存块标志量上数据互斥锁。
步骤406与步骤402基本相同,在此不再赘述。
步骤407,将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
在本实施例中,在对所查找到的内存块的内存块标志量上数据互斥锁之后将该内存块标志量的写入标识重置为指示可写入,退出所查找到的内存块并通知接收节点所查找到的内存块可读。
步骤408,释放数据互斥锁。
步骤408与步骤404基本相同,在此不再赘述。
从图4a中可以看出,与图2a对应的实施例相比,本实施例中的用于机器人操作系统的消息传输方法的流程400突出了对内存块标志量上数据互斥锁的步骤。由此,本实施例描述的方案可以防止其他节点篡改内存块标志量,从而保证整个消息传输方法的正确性。
进一步参考图4b,其示出了用于机器人操作系统的消息传输方法的又一个实施例的流程400’。该用于机器人操作系统的消息传输方法的流程400’,包括以下步骤:
步骤410,接收节点接收发送节点发送的内存块可读的通知后,判断内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入。
步骤410与步骤210基本相同,在此不再赘述。
步骤411,当内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时对内存块的内存块标志量上数据互斥锁。
在本实施例中,接收节点在收到内存块可读的通知后,根据该通知中所指示的内存块的内存块标志量的写入标识判断出是否可从该数据块读取数据,即,写入标识指示可写入时,在读取数据前需要修改内存块标志量,为了防止内存块标志量被其他节点改成需要在修改标志量前对其上数据互斥锁。
步骤412,将内存块的内存块标志量的读取标识所指示的值加1。
在本实施例中,内存块的内存块标志量的读取标识的初始值为0,当有接收节点读取数据时该值加1,可以有多个接收节点同时读取该内存块中的数据,因此该内存块的内存块标志量的读取标识所指示的值根据读取该内存块的接收节点数累加。
步骤413,释放数据互斥锁。
在本实施例中,修改了内存块标志量之后释放数据互斥锁。
步骤414,接收节点读取数据。
在本实施例中,接收节点在修改了内存块标志量之后读取数据。
步骤415,对内存块的内存块标志量上数据互斥锁。
在本实施例中,在读取数据之后需要修改内存块的内存块标志量,为了防止内存块标志量被其他节点改成需要在修改标志量前对其上数据互斥锁。
步骤416,将内存块的内存块标志量的读取标识所指示的值减1、退出内存块并通知发送节点内存块可写入。
在本实施例中,在读取数据之后需要将内存块的内存块标志量的读取标识所指示的值减1,如果此时所有接收节点都读取完数据,则该内存块的内存块标志量的读取标识所指示的值为0,此时该内存块的资料被释放,接收节点退出内存块并通知发送节点内存块可写入。
步骤417,释放数据互斥锁。
在本实施例中,修改了内存块标志量之后释放数据互斥锁。
从图4b中可以看出,与图2b对应的实施例相比,本实施例中的用于机器人操作系统的消息传输方法的流程400’突出了对内存块标志量上数据互斥锁的步骤。由此,本实施例描述的方案可以防止其他节点篡改内存块标志量,从而保证整个消息传输方法的正确性。
进一步参考图5a,作为对上述各图所示方法的实现,本申请提供了一种用于机器人操作系统的消息传输装置的一个实施例,该装置实施例与图2a所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5a所示,本实施例所述的用于机器人操作系统的消息传输装置500包括:查找单元501、写入单元502和读取通知单元503。其中,查找单元501配置用于循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;写入单元502配置用于将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;读取通知单元503配置用于在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
在本实施例的一些可选的实现方式中,写入单元502进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。
在本实施例的一些可选的实现方式中,读取通知单元503进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。
进一步参考图5b,作为对上述各图所示方法的实现,本申请提供了一种用于机器人操作系统的消息传输装置的一个实施例,该装置实施例与图2b所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5b所示,本实施例所述的用于机器人操作系统的消息传输装置500’包括:接收单元511、读取单元512和写入通知单元513。其中,接收单元511配置用于接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;读取单元512配置用于当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;写入通知单元513配置用于读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
在本实施例的一些可选的实现方式中,读取单元512进一步配置用于:在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。
在本实施例的一些可选的实现方式中,写入通知单元513进一步配置用于:在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。
下面参考图6,其示出了适于用来实现本申请实施例的终端设备的计算机系统600的结构示意图。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括查找单元、写入单元和读取通知单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,查找单元还可以被描述为“循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。或者上述非易失性计算机存储介质存储有一个或者多个程序,当所述一个或者多个程序被一个设备执行时,使得所述设备:接收节点接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (12)
1.一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:
发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;
所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;
所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
2.根据权利要求1所述的用于机器人操作系统的消息传输方法,其特征在于,所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据,包括:
所述发送节点在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;
所述发送节点在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。
3.根据权利要求1或2所述的用于机器人操作系统的消息传输方法,其特征在于,所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入,包括:
所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;
所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。
4.一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:
接收节点接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;
当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;
所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
5.根据权利要求4所述的用于机器人操作系统的消息传输方法,其特征在于,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据,包括:
所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;
所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。
6.根据权利要求4或5所述的用于机器人操作系统的消息传输方法,其特征在于,所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1,包括:
所述接收节点在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;
所述接收节点在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。
7.一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:
查找单元,配置用于循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;
写入单元,配置用于将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;
读取通知单元,配置用于在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。
8.根据权利要求7所述的用于机器人操作系统的消息传输装置,其特征在于,所述写入单元进一步配置用于:
在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;
在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。
9.根据权利要求7或8所述的用于机器人操作系统的消息传输装置,其特征在于,所述读取通知单元进一步配置用于:
在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;
在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。
10.一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:
接收单元,配置用于接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;
读取单元,配置用于当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;
写入通知单元,配置用于读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。
11.根据权利要求10所述的用于机器人操作系统的消息传输装置,其特征在于,所述读取单元进一步配置用于:
在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;
在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。
12.根据权利要求10或11所述的用于机器人操作系统的消息传输装置,其特征在于,所述写入通知单元进一步配置用于:
在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;
在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610390281.5A CN106055417B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的消息传输方法和装置 |
US15/279,723 US20170353554A1 (en) | 2016-06-02 | 2016-09-29 | Message transmitting method and device for a robot operating system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610390281.5A CN106055417B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的消息传输方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106055417A true CN106055417A (zh) | 2016-10-26 |
CN106055417B CN106055417B (zh) | 2018-09-11 |
Family
ID=57170167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610390281.5A Active CN106055417B (zh) | 2016-06-02 | 2016-06-02 | 用于机器人操作系统的消息传输方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170353554A1 (zh) |
CN (1) | CN106055417B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108594810A (zh) * | 2018-04-08 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 数据处理的方法、装置、存储介质、终端设备和自动驾驶车辆 |
CN109709902A (zh) * | 2017-10-25 | 2019-05-03 | 富泰华精密电子(郑州)有限公司 | 数据交互方法、系统和存储器 |
CN109766199A (zh) * | 2018-12-29 | 2019-05-17 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN110597640A (zh) * | 2019-08-29 | 2019-12-20 | 深圳市优必选科技股份有限公司 | 进程间的数据传输方法、装置、终端及计算机存储介质 |
CN113282240A (zh) * | 2021-05-24 | 2021-08-20 | 深圳市盈和致远科技有限公司 | 存储空间数据读写方法、设备、存储介质及程序产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798016B (zh) * | 2016-09-06 | 2019-06-07 | 北京百度网讯科技有限公司 | 用于机器人操作系统的数据传输方法和装置 |
JP7042138B2 (ja) | 2018-03-30 | 2022-03-25 | 日立Astemo株式会社 | 処理装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN103377157A (zh) * | 2012-04-27 | 2013-10-30 | 沈阳高精数控技术有限公司 | 一种用于嵌入式数控系统的双核数据通信方法 |
CN105429858A (zh) * | 2015-12-11 | 2016-03-23 | 中国人民解放军国防科学技术大学 | 一种多机器人间实时消息传递方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787437A (en) * | 1996-10-29 | 1998-07-28 | Hewlett-Packard Company | Method and apparatus for shared management information via a common repository |
US6029190A (en) * | 1997-09-24 | 2000-02-22 | Sony Corporation | Read lock and write lock management system based upon mutex and semaphore availability |
US6601120B1 (en) * | 2000-07-13 | 2003-07-29 | Silicon Graphics, Inc. | System, method and computer program product for implementing scalable multi-reader/single-writer locks |
US20020138706A1 (en) * | 2001-03-21 | 2002-09-26 | Littera, Inc. | Reader-writer lock method and system |
US7266722B2 (en) * | 2001-09-21 | 2007-09-04 | Hewlett-Packard Development Company, L.P. | System and method for efficient lock recovery |
US20060156305A1 (en) * | 2004-12-21 | 2006-07-13 | Jaroslav Delapedraja | Multiple task access to an ordered data structure |
US8099538B2 (en) * | 2006-03-29 | 2012-01-17 | Intel Corporation | Increasing functionality of a reader-writer lock |
US20070271450A1 (en) * | 2006-05-17 | 2007-11-22 | Doshi Kshitij A | Method and system for enhanced thread synchronization and coordination |
US8332374B2 (en) * | 2007-04-13 | 2012-12-11 | Oracle America, Inc. | Efficient implicit privatization of transactional memory |
US7934062B2 (en) * | 2007-06-22 | 2011-04-26 | International Business Machines Corporation | Read/write lock with reduced reader lock sampling overhead in absence of writer lock acquisition |
US8095727B2 (en) * | 2008-02-08 | 2012-01-10 | Inetco Systems Limited | Multi-reader, multi-writer lock-free ring buffer |
-
2016
- 2016-06-02 CN CN201610390281.5A patent/CN106055417B/zh active Active
- 2016-09-29 US US15/279,723 patent/US20170353554A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693162A (zh) * | 2011-12-29 | 2012-09-26 | 中国科学技术大学苏州研究院 | 基于共享内存和核间中断的多核平台上多个虚拟机之间进程通信方法 |
CN103377157A (zh) * | 2012-04-27 | 2013-10-30 | 沈阳高精数控技术有限公司 | 一种用于嵌入式数控系统的双核数据通信方法 |
CN105429858A (zh) * | 2015-12-11 | 2016-03-23 | 中国人民解放军国防科学技术大学 | 一种多机器人间实时消息传递方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109709902A (zh) * | 2017-10-25 | 2019-05-03 | 富泰华精密电子(郑州)有限公司 | 数据交互方法、系统和存储器 |
CN108594810A (zh) * | 2018-04-08 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 数据处理的方法、装置、存储介质、终端设备和自动驾驶车辆 |
CN109766199A (zh) * | 2018-12-29 | 2019-05-17 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN109766199B (zh) * | 2018-12-29 | 2024-01-30 | 歌尔股份有限公司 | 一种机器人操作系统中的节点通信方法和装置 |
CN110597640A (zh) * | 2019-08-29 | 2019-12-20 | 深圳市优必选科技股份有限公司 | 进程间的数据传输方法、装置、终端及计算机存储介质 |
CN113282240A (zh) * | 2021-05-24 | 2021-08-20 | 深圳市盈和致远科技有限公司 | 存储空间数据读写方法、设备、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20170353554A1 (en) | 2017-12-07 |
CN106055417B (zh) | 2018-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106055417A (zh) | 用于机器人操作系统的消息传输方法和装置 | |
CN106021000A (zh) | 用于机器人操作系统的共享内存管理方法和装置 | |
CN108897628A (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN106991321A (zh) | 多容器系统中无痕运行应用程序的方法及装置 | |
US7712059B1 (en) | Coverage metric and coverage computation for verification based on design partitions | |
CN106681799B (zh) | 插入磁盘的方法、装置和系统 | |
CN110413282A (zh) | 一种冗余资源处理方法、装置、设备及存储介质 | |
CN106168916A (zh) | 数据传输方法和系统 | |
CN113635947B (zh) | 应用于城轨的联锁仿真模型设计方法及联锁仿真模型 | |
CN107612842A (zh) | 基于令牌管理的数据采集方法、系统、设备及存储介质 | |
CN110503297B (zh) | 业务场景获取方法、装置、电子设备及介质 | |
CN108629699A (zh) | 数据上传方法、数据上传设备、存储介质及装置 | |
CN108108258A (zh) | 一种内存泄露的修复方法和装置 | |
CN105429825B (zh) | 用于数据流系统的监控方法和装置 | |
CN112950341A (zh) | 一种基于区块链的会计系统 | |
CN110347650A (zh) | 一种元数据采集方法及装置 | |
US8046457B2 (en) | Apparatus, methods, and computer program products for managing network elements and associated network element resources by multiple management systems | |
US20240259399A1 (en) | Abnormality detecting device, security system, and abnormality notification method | |
CN101960420A (zh) | 无代码自动配置 | |
CN109033134A (zh) | 一种消息处理方法、装置、存储介质及计算机设备 | |
CN108306926A (zh) | 一种车联网设备网关业务数据的推送方法和装置 | |
CN110866380A (zh) | 一种填写信息字段内容的方法、终端 | |
CN106156069B (zh) | 日志系统和日志记录方法 | |
CN111400269B (zh) | 一种ipfs文件处理方法、节点、介质和设备 | |
CN115511622A (zh) | 一种智能合约的升级方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |