ImageVerifierCode 换一换
格式:PPT , 页数:11 ,大小:98.50KB ,
资源ID:949821      下载积分:10 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-949821.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(线程同步与异步套接字编程.PPT)为本站会员(国***)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

线程同步与异步套接字编程.PPT

1、线程同步与异步套接字编程主讲人:孙鑫http:/www.sunxin.org事件对象n 事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔值。n 有两种不同类型的事件对象。一种是人工重置的事件,另一种是自动重置的事件。当人工重置的事件得到通知时,等待该事件的所有线程均变为可调度线程。当一个自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。http:/www.sunxin.org关键代码段n 关键代码段 (临界区 )工作在用户方式下。n 关键代码段 (临界区

2、)是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。http:/www.sunxin.org线程死锁n 哲学家进餐的问题n 线程 1拥有了临界区对象 A,等待临界区对象 B的拥有权,线程 2拥有了临界区对象 B,等待临界区对象 A的拥有权,就造成了死锁。http:/www.sunxin.org互斥对象、事件对象与关键代码段的比较n 互斥对象和事件对象属于内核对象,利用内核对象进行线程同步,速度较慢,但利用互斥对象和事件对象这样的内核对象,可以在多个进程中的各个线程间进行同步。n 关键代码段是工作在用户方式下,同步速度较快,但在使用关键代码段时,很容易进入死锁状态,因为在等待进入

3、关键代码段时无法设定超时值。http:/www.sunxin.org推荐书目 Windows核心编程 机械工业出版社http:/www.sunxin.org基于消息的异步套接字n Windows套接字在两种模式下执行 I/O操作,阻塞和非阻塞。在阻塞模式下,在 I/O操作完成前,执行操作的Winsock函数会一直等待下去,不会立即返回程序 (将控制权交还给程序 )。而在非阻塞模式下, Winsock函数无论如何都会立即返回。n Windows Sockets为了支持 Windows消息驱动机制,使应用程序开发者能够方便地处理网络通信,它对网络事件采用了基于消息的异步存取策略。n Windows

4、 Sockets的异步选择函数 WSAAsyncSelect()提供了消息机制的网络事件选择,当使用它登记的网络事件发生时, Windows应用程序相应的窗口函数将收到一个消息,消息中指示了发生的网络事件,以及与事件相关的一些信息。相关函数说明int WSAEnumProtocols( LPINT lpiProtocols, LPWSAPROTOCOL_INFO lpProtocolBuffer, ILPDWORD lpdwBufferLength );n Win32平台支持多种不同的网络协议,采用 Winsock2,就可以编写可直接使用任何一种协议的网络应用程序了。通过 WSAEnumPro

5、tocols函数可以获得系统中安装的网络协议的相关信息。n lpiProtocols, 一个以 NULL结尾的协议标识号数组。这个参数是可选的,如果 lpiProtocols为 NULL,则返回所有可用协议的信息,否则,只返回数组中列出的协议信息。n lpProtocolBuffer, out, 一个用 WSAPROTOCOL_INFO结构体填充的缓冲区。 WSAPROTOCOL_INFO结构体用来存放或得到一个指定协议的完整信息。n lpdwBufferLength, in, out, 在输入时,指定传递给 WSAEnumProtocols()函数的 lpProtocolBuffer缓冲区的

6、长度;在输出时,存有获取所有请求信息需传递给 WSAEnumProtocols ()函数的最小缓冲区长度。这个函数不能重复调用,传入的缓冲区必须足够大以便能存放所有的元素。这个规定降低了该函数的复杂度,并且由于一个 机器上装载的协议数目往往是很少的,所以并不会产生问题。相关函数说明SOCKET WSASocket( int af, int type, int protocol, LPWSAPROTOCOL_INFO lpProtocolInfo, GROUP g, DWORD dwFlags );n 前三个参数和 socket()函数的前三个参数含义一样。n lpProtocolInfo, 一

7、个指向 WSAPROTOCOL_INFO结构体的指针,该结构定义了所创建的套接字的特性。如果lpProtocolInfo为 NULL,则 WinSock2 DLL使用前三个参数来决定使用哪一个服务提供者,它选择能够支持规定的地址族、套接字类型和协议值的第一个传输提供者。如果lpProtocolInfo不为 NULL,则套接字绑定到与指定的结构WSAPROTOCOL_INFO相关的提供者。n g, 保留的。n dwFlags, 套接字属性的描述。相关函数说明int WSARecvFrom( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, LP

8、DWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, struct sockaddr FAR *lpFrom, LPINT lpFromlen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); n s, 标识套接字的描述符。n lpBuffers, in, out, 一个指向 WSABUF结构体的指针。每一个 WSABUF结构体包含一个缓冲区的指针和缓冲区的长度。n dwBufferCount, lpBuffers数组中 WSABU

9、F结构体的数目。n lpNumberOfBytesRecvd, out, 如果接收操作立即完成,则为一个指向本次调用所接收的字节数的指针。n lpFlags, in, out, 一个指向标志位的指针。n lpFrom, out, 可选指针,指向重叠操作完成后存放源地址的缓冲区。n lpFromlen, in, out, 指向 from缓冲区大小的指针,仅当指定了 lpFrom才需要。n lpOverlapped, 一个指向 WSAOVERLAPPED结构体的指针 (对于非重叠套接字则忽略 )。n lpCompletionRoutine, 一个指向接收操作完成时调用的完成例程的指针 (对于非重叠套接字则忽略 )。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。