ZBLOG

15.6.2. Non-blocking calls Note As OSX does not support necessary POSIX Real-time features, this feature is not fully supported on OSX. In that case, the feature is limited by the implementation of std::timed_mutex and std::condition_variable_an...

15.6.2. 非阻塞调用

注意:由于OSX不支持必要的POSIX实时特性,因此在OSX上该功能并未完全支持。在这种情况下,该功能受到std::timed_mutexstd::condition_variable_any实现的限制。

Fast DDS API中的某些函数在资源控制竞争时可能会被阻塞一段不确定的时间。被阻塞的函数无法继续执行,直到获得控制权的操作完成,从而导致调用线程被阻塞。

实时应用程序需要可预测的行为,包括从函数调用到返回控制的最大时间可预测性。为了遵循这一限制,可以配置Fast DDS以限制这些函数的最大阻塞时间。如果超过了阻塞时间限制,则请求的操作将被中止,并终止该函数,将控制权返回给调用者。

该配置需要两个步骤:

  1. 在应用程序编译期间设置CMake选项 -DSTRICT_REALTIME=ON
  2. 配置函数的最大阻塞时间。

Fast RTPS非阻塞API

方法 配置属性 默认值
DataWriter::write() reliability().max_blocking_time on DataWriterQos 100毫秒
DataReader::take_next_sample() reliability().max_blocking_time on DataReaderQos 100毫秒
DataReader::read_next_sample() reliability().max_blocking_time on DataReaderQos 100毫秒
DataReader::wait_for_unread_message() 此方法接受一个参数,指定最大阻塞时间 -

以上表格总结了与Fast RTPS相关的方法及其默认的最大阻塞时间配置。通过适当配置这些参数,可以确保在实时应用中获得更好的性能表现。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=7527

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?