当使用 async_write_some 和 async_write 时

2024-05-01

我正在阅读 Boost Asio 的文档,它说

boost::asio::async_write_some可能不会将所有数据传输到对等方。考虑使用async_write如果您需要确保在异步操作完成之前写入所有数据,请使用该函数。

所以这是我的问题,在什么情况下我们应该使用它们,确保所有数据都写入不是很重要吗?!何时使用 async_write_some 只是这个函数在我看来没什么用?


async_write当您需要发送完全适合缓冲区的特定响应时,在请求-答复模式下非常有用。 IE。当您在发送消息后切换到阅读模式时。

但是,如果您需要发送的数据多于写入缓冲区中的数据,那么是否发送整个缓冲区并不重要,因为您还有更多数据要发送。在这种情况下,确保发送整个缓冲区将是低效的,因为最后一个块可能比您刚刚调用时要小async_write_some在循环中,不断地用更多数据填充缓冲区。为了获得最佳性能,您需要确保发送缓冲区中始终有足够的数据来填充整个帧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当使用 async_write_some 和 async_write 时 的相关文章

  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • try/catch 块中的完整代码

    我想知道 这是一个good practice放置complete code里面一个try block或者我应该放置only the code which I feel it will cause a specific exception 我
  • 为什么 Linux TAP 设备不处理 ARP 或 ICMPv6 数据包

    我正在使用以下命令打开 TAP 设备 p gt fd open dev net tun O RDWR skipping error handling code ifr ifr flags IFF TAP IFF ONE QUEUE IFF
  • 如何交叉引用 Sphinx 中 autodoc 生成的函数?

    我正在使用Sphinx autodoc根据我的 Python 库的文档字符串生成文档的功能 找到交叉引用的语法here http sphinx doc org markup inline html ref role 该部分之前必须有一个标签
  • sed 仅在特定字符模式之间用空格替换破折号

    我有这样的行 ORIGINAL sometext1 sometext2 word A12 B34 C56 sometext3 sometext4 sometext5 sometext6 word A123 B45 C67 sometext7
  • Celery:有没有办法编写自定义 JSON 编码器/解码器?

    我有一些对象想要发送到我的应用程序上的 celery 任务 这些对象显然不能使用默认的 json 库进行 json 序列化 有没有办法让 celery 使用自定义 JSON 序列化 反序列化这些对象Encoder Decoder 这里有点晚
  • 为什么Java禁止内部接口的继承?

    IE 为什么以下 循环依赖 不可能 public class Something implements Behavior public interface Behavior 由于接口不引用外部类 因此应该允许这样做 然而 编译器强迫我在类之
  • 有没有办法使用无服务器框架来验证路径

    我在后端使用无服务器框架 使用AWS 我的 serverless yml 像这样 functions getBrand handler functions brand getBrand handler events http path se
  • Rails:基于关联值的ActiveRecord查询

    我有 2 个型号 Report and Server具有belongs to 和has many 关系 我使用创建了一个访问器方法delegate这允许Report来查找其关联的Server company id 现在 我想运行一个查询Re
  • ASP.Net Web Api 未在 POST 上绑定模型

    我正在尝试将 JSON 数据发布到 Web Api 方法 但 JSON 数据未绑定到模型 这是我的模型 DataContract public class RegisterDataModel DataMember IsRequired tr
  • 在 VB.NET 中对对象列表进行排序

    我有一个乘客 对象 列表 它具有不同的属性 passenger name passenger age passenger surname 我想按年龄标准对这个列表进行排序 我该怎么做 我知道在整数 字符串列表中 List Sort 有效 但
  • 在一个 Servlet 中同时处理

    我有一个 Servlet 它接收请求 必须处理 5 个任务 从外部服务器获取数据 并将所有数据发送回订购的客户端 如何同时处理5个任务并在5个任务全部完成后继续执行servlet代码 您可以使用CoundDownLatch http doc
  • Java 双epsilon

    我目前需要一个epsilon http en wikipedia org wiki Machine epsilon类型的double 首选 java 库中的常量 而不是自己的实现 定义 据我所知Double has MIN VALUE an
  • 如何在 C# 日期时间选择器中设置最大时间和最小时间

    我在 C Windows 窗体应用程序中使用日期时间选择器 如何设置最短时间和最长时间 我有一个字符串 07 52 22 我想将其设置为最大或最短时间 我怎样才能做到这一点 DatetimePicker MinDate TimeOfDay
  • ASCII - 代码点与字符编码

    我发现一篇有趣的文章 字符代码问题教程 http jkorpela fi chars html code http jkorpela fi chars html code 解释了术语 字符代码 代码点 和 字符编码 前者只是分配给一个字符的
  • 我是否使用 jQuery noconflict 来避免插件冲突?

    UPDATE 我发现jquery bxslider http bxslider com插件本身会克隆并附加 前置导致问题的 LI 但没有解决这个问题 除非使用另一个脚本 我不得不让 jQuery 插件部分地相互冲突 盒子滑块 http bx
  • 检查运行的代码是否为单元测试用例

    我想检查正在运行的代码是否是单元测试用例 或者不为结果执行不同的代码 例如 if unit test case is running do something else do other thing 对此有什么想法吗 这是一个糟糕的方法 您
  • ActionScript 3 中的圆形滑块

    我希望在 ActionScript 中添加一个圆形滑块 非常类似于这一页 http interface eyecon ro demos drag vr html shows 它最终会改变对象的色调 返回 CMY 值 但如果它只是吐出程度 我
  • 如何通过按删除按钮从 ListView 中删除选定的项目?

    我想从 ListView 中删除一个或多个选定的项目 最好的方法是什么 我正在使用 C 和 dotnet Framework 4 您可以通过迭代来删除所有选定的项目ListView SelectedItems http msdn micro
  • Python 3.1:C3 方法解析顺序

    钻石型继承的一个非常简单的例子 class Root def f self print Root class A Root pass class B Root def f self print B class AB A B pass AB
  • 当使用 async_write_some 和 async_write 时

    我正在阅读 Boost Asio 的文档 它说 boost asio async write some可能不会将所有数据传输到对等方 考虑使用async write如果您需要确保在异步操作完成之前写入所有数据 请使用该函数 所以这是我的问题