iceoryx 发布订阅c代码示例
时间: 2024-05-12 18:15:25 浏览: 9
下面是一个iceoryx发布订阅的C代码示例,其中一个发布者发布一个消息,而两个订阅者订阅这个消息:
```c
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include "iceoryx_posh/popo/subscriber.hpp"
#include "iceoryx_posh/popo/publisher.hpp"
#include "iceoryx_posh/runtime/posh_runtime.hpp"
#include "iceoryx_posh/roudi/introspection_types.hpp"
int main() {
// 初始化iceoryx runtime
iox::runtime::PoshRuntime::initRuntime("publisher");
// 创建发布者和订阅者
iox::popo::Publisher publisher({"Radar", "FrontLeft", "Object"});
iox::popo::Subscriber subscriber1({"Radar", "FrontLeft", "Object"});
iox::popo::Subscriber subscriber2({"Radar", "FrontLeft", "Object"});
// 订阅者1等待消息
subscriber1.subscribe();
printf("Subscriber 1 waiting for messages...\n");
// 订阅者2等待消息
subscriber2.subscribe();
printf("Subscriber 2 waiting for messages...\n");
// 发布者发布消息
printf("Publisher publishing message...\n");
publisher.publish("Hello, world!");
// 等待订阅者接收消息
while (true) {
if (subscriber1.hasData()) {
printf("Subscriber 1 received message: %s\n", subscriber1.getChunk()->userPayload());
break;
}
if (subscriber2.hasData()) {
printf("Subscriber 2 received message: %s\n", subscriber2.getChunk()->userPayload());
break;
}
}
// 清理资源并退出
iox::runtime::PoshRuntime::shutdownRuntime();
return 0;
}
```
需要注意的是,这个示例代码需要使用iceoryx库,需要将iceoryx库链接到您的项目中。