Winsock工作模型

C# Alturos.Yolo目标检测实战:从环境配置到WinForm集成 目标检测是计算机视觉高频需求,YOLO凭借单阶段推理在工业场景中广受欢迎。但C#工程师在WinForm/WPF上位机中集成Darknet推理引擎时,常面临C++与.NET互操作的壁垒。Alturos.Yolo作为成熟的C#封装库,通过P/Invoke调用Darknet原生DLL,只需配置cfg、weights与names文件,即可调用Detect方法完成目标识别、边框标注与类别输出。该库支持图片、摄像头及视频流输入,适合离线桌面端与实时质检系统。本文梳理从解压到部署的完整流程,涵盖NuGet依赖、DLL加载 阅读详情

首先得弄清楚同步、异步、阻塞、非阻塞的概念。
同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。
实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。
以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以这很容易执行函数的线程处于等待I/O上的数据状态,然后被挂起。非阻塞就不一样,执行recv时候不管有没有数据都立即返回,有数据时返回数据,没数据时返回错误。非阻塞可以带来程序的高效,也带来了写程序中必须注意的地方,非阻塞情况下,发送与接收数据时候,要用户自己管理自己的缓冲区,并且要记录发送与接受的位置,因为很可能发送与接受数据的任务不能一次完成,需要多次调用send和recv才可以完成。
本来同步异步是用来表示通讯模式的,通信的同步,主要是指客户端在发送请求后,必须得在服务端有回应后才发送下一个请求。所以这个时候的所有请求将会在服务端得到同步。通信的异步,指客户端在发送请求后,不必等待服务端的回应就可以发送下一个请求,这样对于所有的请求动作来说将会在服务端得到异步,这条请求的链路就象是一个请求队列,所有的动作在这里不会得到同步的。但是个人感觉,在说到socket的同步异步时候,同步跟阻塞概念差不多,都是有了结果才返回,异步则是告诉系统我要recv数据,然后马上返回,等待数据来了后,系统跟程序说数据到了,然后程序再recv数据。引用在网上看到的比较好的描述“阻塞 block 是指,你拨通某人的电话,但是此人不在,于是你拿着电话等他回来,其间不能再用电话。同步大概和阻塞差不多。非阻塞 nonblock 是指,你拨通某人的电话,但是此人不在,于是你挂断电话,待会儿再打。至于到时候他回来没有,只有打了电话才知道。即所谓的“轮询 / poll”。异步是指,你拨通某人的电话,但是此人不在,于是你叫接电话的人告诉那人(leave a message),回来后给你打电话(call back)。”

显然,异步要高效一些。在Winsock中实现异步的方法有很多,Winsock工作模型有下面六种
    一:select模型
    二:WSAAsyncSelect模型
    三:WSAEventSelect模型
    四:Overlapped I/O 事件通知模型
    五:Overlapped I/O 完成例程模型
    六:IOCP模型
从一到六越来越高级,越来越高效,实现越来越复杂。曾在网上看到一些比喻用来很好的说明这些模型,在这里引用一下。

    老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。
一:select模型

老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~
在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。

二:WSAAsyncSelect模型

后来,老陈使用了微软公司的新式信箱。这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此,老陈再也不必频繁上下楼检查信箱了,牙也不疼了,你瞅准了,蓝天......不是,微软~~~~~~~~

三:WSAEventSelect模型

后来,微软的信箱非常畅销,购买微软信箱的人以百万计数......以至于盖茨每天24小时给客户打电话,累得腰酸背痛,喝蚁力神都不好使~~~~~~
微软改进了他们的信箱:在客户的家中添加一个附加装置,这个装置会监视客户的信箱,每当新的信件来临,此装置会发出“新信件到达”声,提醒老陈去收信。盖茨终于可以睡觉了。

四:Overlapped I/O 事件通知模型

后来,微软通过调查发现,老陈不喜欢上下楼收发信件,因为上下楼其实很浪费时间。于是微软再次改进他们的信箱。新式的信箱采用了更为先进的技术,只要用户告诉微软自己的家在几楼几号,新式信箱会把信件直接传送到用户的家中,然后告诉用户,你的信件已经放到你的家中了!老陈很高兴,因为他不必再亲自收发信件了!

五:Overlapped I/O 完成例程模型

老陈接收到新的信件后,一般的程序是:打开信封----掏出信纸----阅读信件----回复信件......为了进一步减轻用户负担,微软又开发了一种新的技术:用户只要告诉微软对信件的操作步骤,微软信箱将按照这些步骤去处理信件,不再需要用户亲自拆信/阅读/回复了!老陈终于过上了小资生活!

六:IOCP模型

微软信箱似乎很完美,老陈也很满意。但是在一些大公司情况却完全不同!这些大公司有数以万计的信箱,每秒钟都有数以百计的信件需要处理,以至于微软信箱经常因超负荷运转而崩溃!需要重新启动!微软不得不使出杀手锏......
微软给每个大公司派了一名名叫“Completion Port”的超级机器人,让这个机器人去处理那些信件!


其实,上面每种模型都有优点,要根据程序需求而适当选择合适的模型,前面三种模型效率已经比较高,实现起来难道不大,很多一般的网络程序都采用前三种模型,只有对网络要求特别高的一些服务器才会考虑用后面的那些模型。MFC中的CAsyncSocket类就是用的WSAAsyncSelect模型,电驴中也是用的这种,不过在寻找对应socket的时候进行了优化,查找更快,在GridCast中采用的是WSAEventSelect模型,等待。


BTW:上面所说均在Windows平台下,只用WinSock才有这么多模型,在linux下,好像就只有第一种select模式,我对linux下的socket不是很了解,应该也有很多提高效率的地方。

 
Winsock IO模型 很幽默的讲解六种Socket IO模型 Windows Socket五种IO模型—代码全攻略 几种Winsock IO模型的分析 共3个文档 立即下载

相关推荐

WinSock 异步IO模型

WinSock 异步IO模型WinSock 异步IO模型

5种IO模型和5种通信模式

操作系统的五种通信模型

远方的行者 1万+

【AI Infra】【RLHF框架】VeRL中WorkerGroup与Ray资源调度的协同机制剖析

本文深入剖析了VeRL框架中WorkerGroup与Ray资源调度的协同机制。通过解析Ray Placement Group的资源抽象和VeRL的RayResourcePool封装,详细阐述了WorkerGroup如何与底层资源精确绑定,并实现RLHF训练中异构、多阶段任务的灵活资源分配与动态调整,为大规模分布式强化学习训练提供了高效解决方案。

weixin_29204205的博客 389

Windows Socket五种I/O模型——代码全攻略(二)

 四.重叠I/O模型Winsock2的发布使得Socket I/O有了和文件I/O统一的接口。我们可以通过使用Win32文件操纵函数ReadFile和WriteFile来进行Socket I/O。伴随而来的,用于普通文件I/O的重叠I/O模型和完成端口模型对Socket I/O也适用了。这些模型的优点是可以达到更佳的系统性能,但是实现较为复杂,里面涉及较多的C语言技巧。

laura0502的专栏 1401

[kriging](一)网上下载的kriging克里金的C++程序的初步调试

笔者在网上下载了一份克里金的C++程序,水平有限,正在逐步地调试中。 初步 克里金法现在在许多软件都已经有集成了,据笔者所知: arcgis : 看过有的arcgis培训视频里面简略介绍了里面的插值方法,有克里金。 surfer :笔者用过这个,效果很好。 gocad :听说有 landmark &jason :研究生时候用的专业的石油物探软件,里面有克里金法,万恶的开始。 pykrig...

FOREST优快云 5610

基于Simplis仿真的UC2843芯片建模与关键参数优化指南

本文详细介绍了使用Simplis仿真工具为UC2843 PWM控制器进行行为级建模的方法与关键参数优化实践。通过精确搭建芯片内部振荡器、误差放大器及电流采样等核心模块,工程师可以深入理解其工作原理,并利用模型优化振荡频率、最大占空比及反馈环路等关键参数,从而提升开关电源设计的效率与可靠性。

efc1234567的博客 460

Windows 上的网络通信编程

本文是基于 MSDN 中的入门指导手册翻译和修改过来的

LikeShadow 2854

4、高级认证解决方案:Active Directory、LDAP、RADIUS和TACACS+深度解析

本文深入解析了多种高级认证解决方案,包括Active Directory、标准LDAP、RADIUS和TACACS+,涵盖其技术优势、配置步骤及适用场景。同时介绍了如何实现通用用户管理,包括使用第三方认证解决方案和ADSI自助用户管理。通过实际案例部署,展示了如何高效、安全地管理大规模用户认证与权限控制,为企业安全架构提供参考。

o4p5q6r7s的博客 303

socket编程的select模型

在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户端都需要去开辟一个新的线程,效率必定底下。 其实,socket编程提供了很多...

weixin_30338481的博客 494

YOLO26改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 213

【存算一体架构实战】四、突破编译壁垒:手把手实现AI模型到存算硬件的自动映射

摘要:存算一体硬件的性能优势难以充分释放,核心瓶颈在于传统编译器无法高效适配"计算-存储融合"的新型架构。本文系统剖析传统编译流程在存算硬件上的三大痛点:数据布局不匹配导致90%带宽浪费、算子映射效率低使硬件利用率不足30%、缺乏专用优化_pass导致延迟居高不下。通过构建MLIR-PIM编译框架,实现从AI模型到存算硬件的全自动化映射,核心流程包括:TensorFlow模型→MLIR Dialect转换→存算优化_pass→硬件指令生成。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 241

【转】 Winsock工作模型

首先得弄清楚同步、异步、阻塞、非阻塞的概念。同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以这很容易执行函数的线程处于等待I/O上的数据状态,然后被挂起。非阻塞就不一样,执行recv时候不管有没有数据都立即返回,有数据时

cuboo的专栏 657

R语言实战应用精讲50篇(二)-多重线性回归系列之稳健回归

前言 线性回归的参数估计主要采用的是最小二乘法(又称最小平方法),该法是将使观测值与模型预测值之差的平方达到最小的值作为参数估计值。如果数据存在异常点或者异方差,最小二乘法估计会存在偏差,常用的处理策略就是改用稳健回归(Robust Regression)。 稳健回归就是采用更为稳健的参数估计方法来拟合模型,所谓稳健就是数据的波动对参数估计影响不大,比如不受异常值影响,或删除某一观测后对结果影响不大。稳健估计的方法有很多,主要有这么几类:最小绝对值回归(也称最小一乘法回归,lAV),最小中位数二乘法(L

wenyusuran的专栏 3160

Winsock工作模型 ( 转 )

首先得弄清楚同步、异步、阻塞、非阻塞的概念。 同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。 实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。 以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以这很容易执行函...

chubaisheng8627的博客 108

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Winsock工作模型 同步 异步

首先得弄清楚同步、异步、阻塞、非阻塞的概念。 同步和异步是针对通讯的工作模式,阻塞和非阻塞是指socket的I/O操作。 实际上对于socket,只存在阻塞和非阻塞,同步与异步是在程序实现上有所不同。 以阻塞的方式执行recv函数,在没有收到数据前,此函数是不会返回的,所以

504

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 完成端口相关API介绍
下一篇: 理解I/O Completion Port(完成端口)
Pregunta
博客等级 码龄23年 6粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值