标签:#Windows并发API

共 4 篇文章

线程池

线程池():一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,对于计算密集型任务,线程数上限一般取CPU逻辑核心数+2,线程数过多会导致额外的线程切换开销。 任务…

重叠I/O

重叠I/O(Overlapped I/O)是Windows操作系统对异步I/O的实现。自Windows NT引入. 重叠I/O对应于Unix的POSIX异步I/O的API (AIO). 重叠I/O特别适合于大量文件或者socket通信、pipe等场合. Windows 9x不支持重叠I/O. 原理 线程请求一个重叠操作的Windows API函数返回时,该重叠操作可能已经执行完,也可能未执行完还处于pending状态。发起重叠操作的操作…

可唤醒I/O

可唤醒I/O(Alertable I/O)是一种重叠I/O,发起I/O请求的线程在可唤醒状态下(alertable state)执行I/O请求的完成例程。也即完成例程作为回调函数(callback function),被这个线程异步过程调用。 线程只有在执行下述API函数之一,并设置适当的参数标记时,才阻塞于可唤醒状态: SleepEx WaitForSingleObjectEx WaitForMultipleObjectsEx Sig…

IOCP

输入输出完成端口(Input/Output Completion Port,IOCP), 是支持多个同时发生的异步I/O操作的应用程序编程接口,在Windows NT的3.5版本以後,或AIX 5版以後或Solaris第十版以後,開始支持。 IOCP特别适合C/S模式网络服务器端模型。因为,让每一个socket有一个线程负责同步(阻塞)数据处理,one-thread-per-client的缺点是:一是如果连入的客户多了,就需要同样多的线…