2.7 在多线程 Windows版本中的 Windows Sockets
来源:互联网 发布:网络逃犯 编辑:程序博客网 时间:2024/05/19 08:42
2.7 在多线程 Windows版本中的 Windows Sockets
Windows Sockets接口被设计成既能够在单线程的 Windows版本(例如 Windows 3.1 )又能
够在占先的多线程Windows版本(例如 Windows NT)中使用,在多线程环境中,套接口接口
基本上是不变的。但多线程应用程序的作者必须知道,在线程之间同步对套接口的使用是应用
在一个线程中关闭一个未完成的阻塞的套接口将会导致另一个线程使用同一套接口的阻
塞调用出错(WSAEINTER)返回,就象操作被取消一样。这也同样适用于某一个 select()调用
未完成时,应用程序关闭了其中的一个被选择的套接口。
在占先的多线程Windows版本中,并没有缺省的阻塞钩子函数。这是因为如果一个单一的
应用程序在等待某一操作结束时并不会调用PeekMessage()或GetMessage()这些会使应用程序产
Windows Sockets接口被设计成既能够在单线程的 Windows版本(例如 Windows 3.1 )又能
够在占先的多线程Windows版本(例如 Windows NT)中使用,在多线程环境中,套接口接口
基本上是不变的。但多线程应用程序的作者必须知道,在线程之间同步对套接口的使用是应用
程序的责任,而不是Windows Sockets实现的责任。这一点在其他形式的 I/O 中管理,例如
文件/O 中是一样的。没有对套接口调用进行同步将导致不可预测的结果。例如,如果有两个线程
同时调用同一套接口进行send(),那么数据发送的先后顺序就无法保证了。在一个线程中关闭一个未完成的阻塞的套接口将会导致另一个线程使用同一套接口的阻
塞调用出错(WSAEINTER)返回,就象操作被取消一样。这也同样适用于某一个 select()调用
未完成时,应用程序关闭了其中的一个被选择的套接口。
在占先的多线程Windows版本中,并没有缺省的阻塞钩子函数。这是因为如果一个单一的
应用程序在等待某一操作结束时并不会调用PeekMessage()或GetMessage()这些会使应用程序产
生一个非占先窗口的函数。因此机器在这种情况下不会被阻塞。然而,为了向后的兼容性,在
多线程Windows版本中,WSASetBlockingHook()函数也被实现了。任何使用缺省阻塞钩子的应
用程序可以安装它们自己的阻塞钩子函数来覆盖缺省的阻塞钩子函数。
- 2.7 在多线程 Windows版本中的 Windows Sockets
- Windows Sockets 1.1版本的Berkeley Sockets函数详解
- Windows Sockets
- Windows Sockets
- Windows Sockets
- Windows Sockets
- Windows Sockets
- Sockets/Windows Sockets错误码
- Sockets/Windows Sockets错误码
- Sockets/Windows Sockets错误码
- python多版本在windows中的切换
- Windows Sockets错误码
- Windows Sockets错误码
- Windows Sockets错误码
- Windows Sockets Error Codes
- Windows Sockets Error Codes
- Windows Sockets错误码
- Windows Sockets:阻塞
- 如何将Android应用程序编译至image/rom中
- matlab 笔记
- 获取网卡、硬盘、CPU硬件信息 的类
- Dijkstra算法实现
- 揭秘美国云计算的五年
- 2.7 在多线程 Windows版本中的 Windows Sockets
- Silverlight跨域访问以及安全策略
- 在 VMWare 7.1.2 + Ubuntu 11.10(32位)中,编译 Android 2.3.7 (gingerbread) 源码 (Anroid Open Source Project)
- Maiyun_Socket.swf麦云socket
- 向量的点乘与叉乘
- PL/SQL 第4章 使用SQL
- 宏定义不是语句(2)
- forward和redirect的区别
- mime types 大全--来自ubuntu /etc/mime.types