none
关于一点c#异步socket的一些问题 RRS feed

  • 问题

  • socket。BeginAccept(........);与在另外启动一个线程里运行socket。Accept(。。。。)有些什么区别?BeginAccept这种方式会自动创建一个线程去执行么?后面这种算异步么?
    2011年5月5日 3:34

答案

  • 简单来说

     

    BeginAccept 使用线程池,因此不需要新建线程。

    Accept 不使用线程池,需要新建线程

     

    BeginAccept 算是异步。


    学习学习....
    2011年5月5日 8:30
  • 在 .NET 中,凡是方法名以 Begin/End 开头的,都是异步代码,它直接或者间接使用多种线程同步构造,如线程池、线程、Task、SynchronizationContext 等进行异步操作。而一般的方法,如果没有特殊说明,都是属于同步方法。同步方法在执行时,会阻塞当前的线程,所以,如果需要构建响应灵活的用户界面,请在合适的地方使用异步。

    另外,在 .NET 5.0 中,凡是以 Async/TaskAsync 结尾的方法都可以使用 await 关键字进行基于 Awaitor 设计模式的异步。有关 await 的详细信息,请参考我的博客中的 C# 5.0 系列。地址:http://www.markzhou.com/blog.


    Mark Zhou
    2011年5月5日 9:30

全部回复

  • 简单来说

     

    BeginAccept 使用线程池,因此不需要新建线程。

    Accept 不使用线程池,需要新建线程

     

    BeginAccept 算是异步。


    学习学习....
    2011年5月5日 8:30
  • 在 .NET 中,凡是方法名以 Begin/End 开头的,都是异步代码,它直接或者间接使用多种线程同步构造,如线程池、线程、Task、SynchronizationContext 等进行异步操作。而一般的方法,如果没有特殊说明,都是属于同步方法。同步方法在执行时,会阻塞当前的线程,所以,如果需要构建响应灵活的用户界面,请在合适的地方使用异步。

    另外,在 .NET 5.0 中,凡是以 Async/TaskAsync 结尾的方法都可以使用 await 关键字进行基于 Awaitor 设计模式的异步。有关 await 的详细信息,请参考我的博客中的 C# 5.0 系列。地址:http://www.markzhou.com/blog.


    Mark Zhou
    2011年5月5日 9:30