RTI_DDS自定义插件开发 5 专属区域(_xxEA)

    你已经注意到,这必须由交通运输插件实现的API函数的名称有一个神秘的后缀,或者_rEA,_srEA,_rrEA或_cEA。实际上,唯一没有的就是这个send()功能。这些后缀用于指示NDDS在调用函数时保证的多线程安全级别,以便可以简化插件实现这些函数。

    该_xxEA后缀用于指示如何的功能被划分成不同的多线程安全组或独占 领域。

    由于NDDS核心是多线程的,因此多个线程可能同时调用传输插件实例的API。然而,NDDS的设计是这样的,这种行为是明确的。函数已经组合在一起成为“专用区域(EAs)”,以便NDDS保证同一EA中的函数将以单线程方式(通常针对某些数据)被调用。

    由于NDDS本身已经具有信号量和互斥体来防止EA内的多线程交互,因此Transport-Plugin实现者可以利用该设计,并且只有在不同EA中的函数之间可能存在传输特定的多线程交互时才创建信号量或互斥量。

    首先,所有EA都适用于Transport Plugin的实例。相同的Transport Plugin类的不同实例之间不提供任何保证。已定义的EA是

    _rEA- receive_rEA(),return_loaned_buffer_rEA()。

“r”代表接收。相同的RecvResource不会同时调用这两个函数。

_cEA(),get_class_name_cEA(),string_to_address_cEA(),get_receive_interfaces_cEA(),register_listener_cEA() delete_cEA()

“c”代表配置。传输插件的同一个实例不会同时调用这些函数。

_rrEA-,unblock_receive_rrEA(),create_recvresource_rrEA(),destroy_recvresource_rrEA(),share_recvresource_rrEA() unshare_recvresource_rrEA()

“rr”代表RecvResource。相同的RecvResource不会同时调用这些函数。

_srEA-,create_sendresource_srEA(),destroy_sendresource_srEA(),share_sendresource_srEA() unshare_sendresource_srEA()

“sr”代表SendResource。对于相同的SendResource,这些函数不会被同时调用。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值