当前位置: 首页 > news >正文

建设网站元素搜索引擎推荐电子商务网站建设

建设网站元素搜索引擎,推荐电子商务网站建设,wordpress更改ico,产品网站免费模板文章目录 前言本机DPDK IPC API介绍demo演示 前言 DPDK的主进程和辅助进程之间共享大页内存。关于DPDK多进程的支持文档介绍见#xff1a;47. 多进程支持。 本文介绍本机DPDK的主进程和辅助进程之间交换短消息的API的使用。 前置要求#xff1a;DPDK-Hello-World示例应用程… 文章目录 前言本机DPDK IPC API介绍demo演示 前言 DPDK的主进程和辅助进程之间共享大页内存。关于DPDK多进程的支持文档介绍见47. 多进程支持。 本文介绍本机DPDK的主进程和辅助进程之间交换短消息的API的使用。 前置要求DPDK-Hello-World示例应用程序 本机DPDK IPC API介绍 具体的API接口使用见API 手册。 第一种是消息。相关函数如下 int rte_mp_sendmsg (struct rte_mp_msg *msg)发送消息。辅助进程调用该函数发送单播消息到主进程。主进程调用该函数发送广播消息到所有辅助进程。 第二种是请求。相关函数如下 int rte_mp_request_sync (struct rte_mp_msg *req, struct rte_mp_reply *reply, const struct timespec *ts): 同步请求阻塞直到收返回内容可以设置等待时长。int rte_mp_request_async (struct rte_mp_msg *req, const struct timespec *ts, rte_mp_async_reply_t clb): 异步请求。不会阻塞。int rte_mp_action_register (const char *name, rte_mp_t action): 注册消息/请求到来时对应的响应函数。void rte_mp_action_unregister (const char *name): 取消注册的响应函数。int rte_mp_reply (struct rte_mp_msg *msg, const char *peer): 响应函数中调用该函数对请求做出回复。 不管时消息还是请求都需要填充rte_mp_msg这个结构体。要填充的字段列表如下 name- 消息名称。该名称必须与接收者的回调名称匹配。param- 消息数据最多 256 字节。len_param- 消息数据的长度。fds- 与数据一起传递的文件描述符最多 8 个 fd。num_fds- 要发送的文件描述符的数量。 可以看到主辅进程之间可以传递文件描述符这就很厉害了。消息一次最多传递256个字符传递数据能力有限。但是通过文件描述符(如socketpair创建的描述符)主辅进程通信起来就很方便了。 demo演示 不太会用大概写了一个demo(1)辅助进程发送消息给主进程其中包含一段字符串和一个文件描述符。(2)主进程收到消息后阻塞读取文件描述符。(3)辅助进程通过fd给主进程发送消息最后关闭fd(发送EOF)。 (4)可以结合epoll/libevent进一步提高代码的灵活性。 完整代码见仓库。 辅助进程代码如下。 #include common.h #include rte_eal.h #include rte_errno.hint main(int argc, char *argv[]) {int ret;// 创建pipe管道int fd[2];ret pipe(fd);if (ret 0) {fprintf(stderr, Failed to execute pipe function\n);return -1;}ret rte_eal_init(argc, argv);if (ret 0) {printf(Error message: %s\n, rte_strerror(rte_errno));return -1;}// 获取当前程序的名称char hello_msg_send[256];get_process_name(hello_msg_send, sizeof(hello_msg_send));strncat(hello_msg_send, :Hi, I am secondary.,sizeof(hello_msg_send) - strlen(hello_msg_send) - 1);// 构建发送消息struct rte_mp_msg hello;strncpy(hello.name, hello_register, sizeof(hello.name) - 1);strncpy(hello.param, hello_msg_send, sizeof(hello.param) - 1);hello.len_param strlen(hello_msg_send);hello.fds[0] fd[0];hello.num_fds 1;ret rte_mp_sendmsg(hello);if (ret 0) {printf(Error message: %s\n, rte_strerror(rte_errno));return -1;}// 通过pipe的fd,给primary发送内容const char *close_msg I(secondary) will close;int send_len strlen(close_msg);int n 0;while (n send_len) {n write(fd[1], close_msg n, sizeof(close_msg));}close(fd[1]);return 0; }主进程代码如下。 #include common.h #include rte_eal.h #include rte_errno.hint secondary_fd -1;int hello_msg_reply(const struct rte_mp_msg *msg, const void *peer) {printf(recv:);printf(%s\n, (char *)msg-param);printf(recv len %d\n, msg-len_param);secondary_fd msg-fds[0]; }int main(int argc, char *argv) {int ret rte_eal_init(argc, argv);if (ret 0) {printf(Error message: %s\n, rte_strerror(rte_errno));return -1;}rte_mp_action_register(hello_register, hello_msg_reply);while (secondary_fd 0) {sleep(1);}char buf[256];while (read(secondary_fd, buf, sizeof(buf) - 1)) {printf(%s\n, buf);}return 0; }运行输出如下。 sudo ./primary sudo ./secondary --proc-typesecondary# 主进程输入如下 recv:secondary:Hi, I am secondary. recv len 29 I(secondary) will close
http://www.dnsts.com.cn/news/260769.html

相关文章:

  • 建筑效果图网站有哪些档案网站建设论文
  • 邯郸住房及城乡建设部网站深圳设计网站费用
  • 天猫做网站discuz!网站模板
  • 怎么让自己的网站被百度收录wordpress同类软件
  • 外贸网站系统全网关键词云查询
  • 蚌埠市建设银行网站免费网站开发平台
  • 产品设计公司招聘吉安网站建设优化服务
  • 烟台网站排名系统ftp空间网站
  • 计算机网站建设教程海口建站
  • 做外贸的网站有何用处wordpress 调用 api接口
  • 做尽调需要用到的网站网站如何改首页模块
  • 网站内容建设策略黑网站代码制作
  • 微信开放平台 网站开发wordpress 获取别名
  • 备案网站可以做接码平台么兰州做网站价格
  • 网站登录验证码不显示成都网站运营
  • 响应式网站是什么软件做的wordpress本地评论插件
  • 建材做网站好吗全球广告公司排名
  • .net asp可以外链其它网站吗二类电商平台
  • 网站设置5个关键词网站优化建设哈尔滨
  • 多功能网站建设服务至上一个主机多个网站
  • 网站外链发布平台龙岗网站建设代理商
  • 西安网站建设电话咨询工业设计网站国外
  • html做网站实战教程学做网站能赚多少钱
  • 百度站长官网大气集团企业网站源码
  • 黑龙江住房和城乡建设部网站网站开发 为什么要用缩略图
  • 四川成都网站制作网站关键词怎么布局
  • 网上怎么做网站赚钱网站如何提升seo排名
  • 做网站后端要什么技术四川电子商务网站
  • 成都网站建设优化推广php做视频网站有哪些软件
  • cms网站开发模式中国纪检监察报邮箱