boost::asio::ip::tcp/udp::socket::release 函数为什么限制 Windows 8.1 才可以调用?

如本文题目所示,这是因为只有在 Windows 8.1(Windows Server 2012 RC)及以上 Windows 操作版本才提供了运行时,修改/删除完成端口关联的ABI接口。

boost::asio 在 release 函数底层实现之中是调用了  FileReplaceCompletionInformation 函数来删除完成端口关联的。

微软官方的MSDN文档,上面有明确说明。

FILE_INFORMATION_CLASS (wdm.h) - Windows drivers | Microsoft Learn

FileReplaceCompletionInformation
Value: 61
A FILE_COMPLETION_INFORMATION structure to change or remove the completion port associated with a file handle. This value is available starting with Windows 8.1.

所以如果想要切 io_context 驱动线程,可能就以下几个思路。

1、共享同一个 io_context,在上层自己控制 strand 来切

2、多个 io_context 的情况,想要把 socket 交给另一个 io_context,可以考虑二次转发来解决。

3、做成多模式,Windows 8.1 以下的版本,走原本流程(不转移 io_context),Windows 8.1及以上可以转移 io_context 驱动。

4、如果能够提前知道某一个 sockfd,最终会放在那个 io_context 上是最好的。

如果修改 asio 的源代码,如果调用失败就忽略呢?也是不行的哟,因为 iocp 没有解除关联,所以就会出现致命问题,因为没法重新 assign 附加到 iocp 上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578093.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git仓库太大只下载单个文件或文件夹

有没有这样的苦恼:仓库太大,只想下载其中某些文件(夹)? 一招解决:bash down_folder_from_git.sh 运行前,先修改开头三个变量 原理: 稀疏检出 让工作树仅包含自定义的文件 #!/usr/bin/bash addrhttps://github.com/fac…

【edge浏览器无法登录某些网站,以及迅雷插件无法生效的解决办法】

edge浏览器无法登录某些网站,以及迅雷插件无法生效的解决办法 edge浏览器无法登录某些网站,但chrome浏览器可以登录浏览器插件无法使用,比如迅雷如果重装插件重装浏览器重装迅雷后仍然出现问题 edge浏览器无法登录某些网站,但chro…

niushop单商户V5多店版源码分享三端uniapp打包方法包括PC端_小程序或h5端打包_收银端打包_APP端打包_商户端

目前多店版有四端uniapp,包括PC端uniapp,商家端uniapp,收银端uniapp,门店手机端uniapp,下面我总结下这些端的打包流程希望能帮助到大家,需要交流的可以看我昵称或者点我头像关注我分享代码和教程 一.niush…

IoT网关在智能制造工厂生产线监控与管理中的应用-天拓四方

随着工业4.0时代的到来,智能制造已成为工业发展的重要方向。IoT网关在智能制造工厂中扮演着关键角色,它能够实现设备间的互联互通、数据的实时采集与处理,以及生产线的智能监控与管理。本案例将详细介绍IoT网关在智能制造工厂生产线监控与管理…

constexpr与std::is_same_v碰撞会产生什么火花?

1. 只编译会用到的if分支 示例代码一中,checkType_v1和checkType_v2两个函数的区别就是if的条件里一个加了constexpr一个没加,加与不加从结果来看都一样,那在编译时和运行时各有什么区别呢? 示例代码一,test_01.cpp&…

与鲸同行,智领未来!和鲸科技“人工智能+X”学科建设合作交流会(北京站)圆满结束!

在国家加快发展新质生产力的大背景下,3月25日下午,和鲸科技 2024 年“人工智能X”学科建设合作交流会(北京站)暨“AIX”实验室建设与供应商选型座谈会顺利召开。为提供更为集中和专业的讨论环境,本次会议特别采取闭门审…

海豚【货运系统源码】货运小程序【用户端+司机端app】源码物流系统搬家系统源码师傅接单

技术栈:前端uniapp后端vuethinkphp 主要功能: 不通车型配置不通价格参数 多城市定位服务 支持发货地 途径地 目的地智能费用计算 支持日期时间 预约下单 支持添加跟单人数选择 支持下单优惠券抵扣 支持司机收藏订单评价 支持订单状态消息通知 支…

抢先一步,搞定阿里面试难题——双亲委派机制揭秘!

希望本文对你有所帮助,欢迎继续关注我的公众号“知其然亦知其所以然”,一起探索更多有趣的技术话题! 大家好,我是小米,欢迎来到我的微信公众号!今天,我们将深入探讨一道备受关注的面试题目——“双亲委派机制”。这个话题是阿里巴巴等顶尖科技公司面试中常常涉及的一环…

企业数据资产管理的战略价值与实施策略

一、引言 数据资产不仅记录了企业的历史运营情况,更能够揭示市场的未来趋势,为企业的决策提供有力支持。因此,如何有效地管理和利用数据资产,已经成为企业竞争力的重要体现。本文将探讨企业数据资产管理的战略价值与实施策略&…

使用uni-app开发微信小程序并实现页面间的跳转

一、下载需要的开发工具 HBuilderX 微信开发者工具 HBuilderX HBuilderX-高效极客技巧 (dcloud.io) 微信开发者工具 下载 / 开发版更新日志 (qq.com) 二、新建项目 通过vue-cli命令行创建项目 参考: uni-app官网 (dcloud.net.cn) 2.1全局安装 vue-cli npm i…

KUKA机器人新控制柜KRC5控制柜的特点

KUKA机器人的新控制柜KRC5控制柜已经上市一段时间了,相比于KRC4控制柜,具有一系列显著的特点: 1、节省空间:KRC5的设计紧凑,有效节约工作空间。 2、高品质和低能耗:该产品提供杰出的性能,运行期…

力扣热门算法题 169. 多数元素,200. 岛屿数量,199. 二叉树的右视图

169. 多数元素,200. 岛屿数量,199. 二叉树的右视图,每题做详细思路梳理,配套Python&Java双语代码, 2024.03.29 可通过leetcode所有测试用例。 目录 169. 多数元素 解题思路 完整代码 Python Java 169. 多数…