首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BOOST Asio async_write_some vs asio::async_write,强制执行一次写入操作

BOOST Asio async_write_some vs asio::async_write,强制执行一次写入操作
EN

Stack Overflow用户
提问于 2022-10-25 13:23:48
回答 1查看 61关注 0票数 1

一些特殊的文件具有与单个写入相关的语义。(例如,FunctionFS (用户空间中的USB小工具)将单个USB传输中的一串USB数据包关联起来。两次写入将永远不会合并到单个USB数据包中。因此,第一次写入可以以短分组结束。)

因此,我不想使用asio::async_write,因为它允许对传递流的底层async_write_some进行零次或多次调用。但是,如果我直接使用stream.async_write_some,它允许并不是所有的数据都已经写入。

我需要的是保证流的async_write_some (of posix::basic_stream_descriptor)将序列中的所有缓冲区传递给向量化的写系统调用,并且只在系统调用决定这样做时才写入更少的数据。

我怎样才能做到这一点?我走错路了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-25 13:36:16

您将在POSIX API方面使用什么?很可能它最终会得到与ASIO所连接的完全相同的底层API。因此,如果该API以您描述的方式运行,您可以期望ASIO以相同的方式运行(而不是导致部分完成)。

我很容易知道ASIO可能对缓冲区划分/操作有意见的唯一地方是另一种方式,因为出于性能原因,SSL缓冲区序列可以在写入之前进行组合。

如果我们知道这两个接口,您将尝试对比/影响分析,这将有所帮助。由于明显的原因,使用asio::posix::stream_descriptorasio::serial_port会有区别。可能存在平台差异,但我假设平台是Linux,因为有了FunctionFS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74194786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档