Socket同步异步接口 混着用可行么?!

shouso888 2015-05-10 06:48:56
clientSocket 是 一个socket链接
clientSocket.BeginConnect;//是 异步
clientSocket.Receive;// 是 同步
clientSocket.BeginSend;// 是 异步

接收数据用的是同步接口 Receive; 发送数据用的是 异步接口 BeginSend;可行么?!
...全文
221 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 版主 2015-05-11
  • 打赏
  • 举报
回复
同步异步在一起无所谓了...不过一般没这么干的..... 另外只有一个client而已....更是怎么玩都无所谓了..
shouso888 2015-05-10
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
监听处理消息要确保所使用的机制是基于 IOCP 底层的,采用异步处理方式来保证I/O线程尽快释放给系统。 实际上反而是写数据操作是同步的。因为经常是需要确保对方已经收到,如果写操作异常则应该继续向上抛出异常,所以经常可以是采用同步写的。这方面谈不上什么“效率之争”,因为逻辑上要求这样设计(异步处理逻辑反而可能是错的了)。
先谢谢大家的回复。 我只是一个简单的客户端,只有一个链接,而且客户资源有限,考虑简单的阻塞模式不合理么? 我想确认 这些同步异步接口 混着用可行么?谢谢
shouso888 2015-05-10
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
为了保证数据处理效率,要使用基于 IOCP 的技术,并且是异步处理收到的消息(不应该在I/O线程中去处理消息)。不知你从哪里听说到的要反其道而行。
我现在是在一个线程里读数据,读到的数据会缓存起来等待主线程来处理,不是在I/O线程中处理数据。
  • 打赏
  • 举报
回复
监听处理消息要确保所使用的机制是基于 IOCP 底层的,采用异步处理方式来保证I/O线程尽快释放给系统。 实际上反而是写数据操作是同步的。因为经常是需要确保对方已经收到,如果写操作异常则应该继续向上抛出异常,所以经常可以是采用同步写的。这方面谈不上什么“效率之争”,因为逻辑上要求这样设计(异步处理逻辑反而可能是错的了)。
  • 打赏
  • 举报
回复
为了保证数据处理效率,要使用基于 IOCP 的技术,并且是异步处理收到的消息(不应该在I/O线程中去处理消息)。不知你从哪里听说到的要反其道而行。
tcmakebest 2015-05-10
  • 打赏
  • 举报
回复
socket还是那个socket,管你是晾拌还是热炒, 我认为没事.
shouso888 2015-05-10
  • 打赏
  • 举报
回复
自己补充说明一下。这是因为我之前用的是 BeginRead/BeginWrite, 现在为了提高程序效率, 发现客户端的程序只要保证主线程写时异步即可,分线程的读可以考虑采用 同步阻塞读模式。。 这就会面临 同步异步接口 混用的 情况。 各位大侠这可行么?

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧