- 1、本文档共65页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多线程与异步套接字编程 在Windows操作系统中,线程是指系统中最小的功能执行单元,其可以独立的完成某一项功能。所以在进行Windows编程中,如果用户使用多线程处理某个功能,那么该功能被处理的效率远比单个线程处理的效率高。在本章中,将向用户介绍使用多线程处理异步套接字编程的相关方法。 多线程技术 在操作系统中,所有程序的功能都是由每个程序中的多个线程共同完成。从某种特定的意义上而言,线程才是计算机真正意义上的功能执行者。而从线程执行的数目而言,线程可以分为单线程和多线程。其中,多线程是由多个单线程组成。如果从线程的执行效率而言,多线程较单线程的执行效率高很多。那么用户在编程时,使用多线程技术可以提高程序的执行效率。 委托 定义委托 2-1 定义委托 2-2 事件 定义事件 订阅事件 通知订阅对象 示例 总结 委托包含对方法的引用 C# 中的事件允许一个对象将发生的事件或修改通知其他对象 基本概念 在本节中,将介绍一些关于计算机进程和线程方面的基本概念。用户通过这些基本概念的学习,将学习到计算机程序的工作原理以及多线程处理方面的基础知识。 1.计算机进程 2.计算机线程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 5.4 多线程编程 多线程编程 2.线程同步 在包含多个线程的应用程序中,线程间有时会共享存储空间,当两个或多个线程同时访问同一共享资源时,必然会出现冲突问题。如一个线程可能尝试从一个文件中读取数据,而另一个线程则尝试在同一个文件中修改数据。在这种情况下,数据可能变得不一致。针对这种问题,通常需要让一个线程彻底完成其任务后,再运行下一个线程;或者要求一个线程对共享资源访问完全结束后,再让另一个线程访问该资源,必须保证一个共享资源一次只能被一个线程使用。实现此目的的过程称为线程同步。 多线程编程 多线程编程 多线程编程 多线程编程 多线程编程 异步TCP应用编程 Socket类 1) BeginAccept(AsyncCallBack, Object): 接入一个尝试的连接 2) EndAccept(IAsyncResult): 结束挂起的异步接受传入,并创建新的套接字 3) BeginConnect(EndPoint, AsyncCallBack, Object) 尝试连接远程主机 4) EndConnect(IAsyncResult) 结束处于挂起的异步连接请求 5) BeginReceive: 开始从连接的Socket中异步接收数据。 6) EndReceive: 结束挂起的异步读取。 7) BeginSend: 将数据异步发送到连接的Socket。 8) EndSend: 结束挂起的异步发送。 AsynCallback委托 AsynCallback委托 当线程池中的Begin…方法执行完毕时,会自动通过 AsyncCallback委托调用在Begin…方法的参数中 指定的回调方法。 回调方法是在程序中事先定义的,在回调方法 中,通过End…方法获取Begin…方法的返回值和 所有输入/输出参数,从而达到异步操作方式下完 成参数传递的目的。 异步TCP编程 异步TCP编程 异步TCP编程 EventWaitHandle类 System.Threading命名空间下的EventWaitHandle 类,用于在异步操作时控制线程间的同步,即控制 一个或多个线程继续执行或者等待其它线程完成。 也就是,需要同步的线程可以先阻塞当前线程,然 后根据Windows操作系统发出的信号,决定是继续 阻塞等待其它工作完成,还是不再等待而直接往下 执行。 EventWaitHandle类 EventWaitHandle类提供的方法有: 1) Reset:将信号的状态设置为非终止状态,即不让操作系统发出信号,从而导致等待收到信号才能继续执行的线程阻塞。 2) Set:将事件状态设置为终止状态,这样等待的线程将会收到信号,从而继续执行而不再等待。 3) WaitOne:阻塞当前线程,等待操作系统为其发出信号,直到收到信号才解除阻塞。 EventWaitHandle类 异步TCP应用编程 TcpListener类 1) BeginAcceptTcpClient:开始一个异步操作接受一个传入的连接尝试。
文档评论(0)