完成端口
文章平均质量分 63
linuxheik
这个作者很懒,什么都没留下…
展开
-
SOCKET编程登峰造极之完成端口
一、什么是完成端口?完成端口---是一种WINDOWS内核对象。完成端口用于异步方式的重叠I/0情况下,当然重叠I/O不一定非使用完成端口不可,还有设备内核对象、事件对象、告警I/0等。但是完成端口内部提供了线程池的管理,可以避免反复创建线程的开销,同时可以根据CPU的个数灵活的决定线程个数,而且可以让减少线程调度的次数从而提高性能。 二、完成端口的内部机制1)创建完成端口完成转载 2017-06-21 14:50:29 · 448 阅读 · 0 评论 -
BindIoCompletionCallback
四、编写线程池回调函数: 在讨论扩展定义OVERLAPPED结构体时,给出了非线程池版的线程函数的大概框架,也就是传统IOCP使用的自建线程使用方式,这种方式要自己创建完成端口句柄,自己将SOCKET句柄绑定到完成端口,这里就不在赘述,主要介绍下调用BindIoCompletionCallback函数时,应如何编写这个线程池的回调函数,其实它与前面那个线程函数是很类似的。先来看看回调函数长转载 2017-06-14 11:50:07 · 1688 阅读 · 0 评论 -
IOCP机制与网络代理服务器实现方法
请求问题,采用IOCP多线程控制模型建立高效网络代理服务器思想,能够较好地代理服务器中的多线程竞争问题。本文在比较基于该模型的两种编程方案的基础上,给出了基于Windows2000的网络代理服务器的设计与代理实现过程。关键词:完成端口重叠I/O多线程1、引言网络代理服务器的主要作用是将客户端的访问请求转发到远程服务端,并将应答信息回传给客户端。随着Internet应用的迅速转载 2017-06-14 12:00:41 · 565 阅读 · 0 评论 -
IOCP机制与网络代理服务器实现方法
IOCP机制与网络代理服务器实现方法]IOCP是一种在Windows服务平台上比较成熟的I/O方法,针对大量并发客户[摘要摘要]请求问题,采用IOCP多线程控制模型建立高效网络代理服务器思想,能够较好地代理服务器中的多线程竞争问题。本文在比较基于该模型的两种编程方案的基础上,给出了基于Windows2000的网络代理服务器的设计与代理实现过程。关键词:完成端口重叠I/O多线程1转载 2017-06-14 14:13:11 · 420 阅读 · 0 评论 -
BindIoCompletionCallback多线程下效率不如单线程高.
BindIoCompletionCallback多线程下效率不如单线程高.2015-02-26 14:13:20分类: C/C++// IOCP_TCPIP_Socket_Server.cpp #include "stdafx.h"#include "SafeLocker.h" #include #include #include #incl转载 2017-06-14 14:24:14 · 685 阅读 · 0 评论 -
接收I/O请求完成通知
那片土在蓝天上燃烧的翅膀《Windows via C/C++》学习笔记 —— 设备I/O之“接收I/O请求完成通知” 上一篇,讨论了如何发送I/O请求。在异步的设备I/O请求方式下,要考虑的问题就是当I/O请求完成之后,驱动程序如何通知你的应用程序。本篇主要讨论获得通知的方法。 Windows 提供了4种不同的技术方法来得到I/O完成的通转载 2017-03-27 14:38:25 · 1466 阅读 · 0 评论 -
SetFileCompletionNotificationModes FILE_SKIP_COMPLETION_PORT_ON_SUCCESS
SetFileCompletionNotificationModes functionSets the notification modes for a file handle, allowing you to specify how completion notifications work for the specified file.SyntaxC++转载 2017-06-14 15:23:39 · 503 阅读 · 0 评论 -
两种高性能I/O设计模式(Reactor/Proactor)的比较
两种高性能I/O设计模式(Reactor/Proactor)的比较综述这篇文章探讨并比较两种用于TCP服务器的高性能设计模式。 除了介绍现有的解决方案,还提出了一种更具伸缩性,只需要维护一份代码并且跨平台的解决方案(含代码示例),以及其在不同平台上的微调。 此文还比较了java、c#、c++对各自现有以及提到的解决方案的实现性能。系统I/O 可分为阻塞型, 非阻塞同步型以及非阻塞异转载 2017-06-14 16:03:16 · 278 阅读 · 0 评论 -
reactor和proactor模式
reactor和proactor模式标签: aiojavaJavaJAVAproactorreactor设计模式2013-01-02 08:11 21177人阅读 评论(6)收藏举报分类: 设计模式(5) 版权声明:本文为博主原创文章,未经博主允许不得转载。首先分享一下,我在网上看到的两篇不错的文章:正是这两篇转载 2017-06-14 16:05:29 · 287 阅读 · 0 评论 -
网络库多线程并发处理实现
boost中asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全。时间:2014-08-12 00:34:33 阅读:854 评论:0 收藏:0 [点我收藏+] 标签:使用 os io 数据 for ar art 问题 1、实现多线程方法:其实就是多个线程同时调用io转载 2017-06-15 16:54:49 · 906 阅读 · 0 评论 -
epoll中et+多线程模式中很重要的EPOLL_ONESHOT实验
因为et模式需要循环读取,但是在读取过程中,如果有新的事件到达,很可能触发了其他线程来处理这个socket,那就乱了。EPOLL_ONESHOT就是用来避免这种情况。注意在一个线程处理完一个socket的数据,也就是触发EAGAIN errno时候,就应该重置EPOLL_ONESHOT的flag,这时候,新到的事件,就可以重新进入触发流程了。注:EPOLL_ONESHOT的原理其实是,每次转载 2017-06-15 17:25:53 · 982 阅读 · 0 评论 -
自己趟过epoll的坑
坑的背景本人用epoll来实现多路复用,epoll触发模式有两种:ET(边缘模式)LT(水平模式)LT模式是标准模式,意味着每次epoll_wait()返回后,事件处理后,如果之后还有数据,会不断触发,也就是说,一个套接字上一次完整的数据,epoll_wait()可能会返回多次,直到没有数据为止。ET模式也称高效模式,有数据过来后,epoll_wait()会转载 2017-06-15 17:41:13 · 13062 阅读 · 3 评论 -
Linux epoll 详解
最近,异想天开,想用D实现一个web服务器(似乎已经想这件事好久了,只不过之前是C++),自然而然得开始研究epoll。早就听说过epoll的大名,只不过网上的教程似乎没多少,并且感觉也没怎么把用法给讲完整。好在,通过几天的学习,也算是有所积累,因此想通过这篇post记录下,尽量把细节给讲清楚,希望它对各位有所价值。在linux平台下,epoll是异步阻塞的,真正异步非阻塞的是AIO,只不过据转载 2017-06-14 11:24:27 · 604 阅读 · 0 评论 -
Epoll实验总结
Epoll实验总结 2012-09-06 15:54:10| 分类: network_program | 标签:epoll c |举报 |字号 订阅 下载LOFTER我的照片书 | 一、超时实验建立一个阻塞模式的tcp连接到一个没有监听的服务端口(肯定连不上,然后等待超时)转载 2017-06-14 11:23:15 · 383 阅读 · 0 评论 -
Windows下性能最好的I/O模型——完成端口
Windows下性能最好的I/O模型——完成端口I/O模型——完成端口设计目的: 常见的网络通信分为两种:同步和异步。 在同步通信中,每一次接受数据都会导致主线程的挂起,从而阻塞住了其他操作。为了解决这一问题,我们通常会采取同步通信+多线程的策略,即为每一个连入的Socket分配一个线程。然而随着连入的Socket的数量的增加,线程的数量也在增加,这样CPU则需要不停地转载 2017-06-21 15:04:53 · 582 阅读 · 0 评论 -
《Windows via C/C++》学习笔记 —— 设备I/O之“I/O完成端口”
《Windows via C/C++》学习笔记 —— 设备I/O之“I/O完成端口” 上一篇讲了3种接受异步I/O请求完成的通知的方法,分别是:通知一个设备内核对象、通知一个事件内核对象、告警I/O。 本篇主要讲另一种接受异步I/O请求的方法——I/O完成端口。这是性能最高,且扩充性最好的方法。但是实现比较复杂。 介绍I/O完成端口之前介绍两种服务器线程模型:连续模转载 2017-06-21 16:38:46 · 279 阅读 · 0 评论 -
libuv源码分析(2)
http://www.cnblogs.com/watercoldyi/p/5682344.html这一篇来分析libuv的四个特殊的持续请求(uv_handle_t族),uv_idle_t,uv_check_t,uv_prepare_t,uv_async_t。它们直接以强类型保存在uv_loop_t中,而不像其它的持续请求保存在handle_queue中,也是最简单的持续请求。在实现中转载 2017-06-21 17:07:20 · 684 阅读 · 0 评论 -
ARRAY_SIZE
以前修過一些通識課程,不能說沒有收穫,但現在只記得課程名稱,大概就是「藝術與人生」或「藝術導論」一類的,具體內容大概忘光了,然,這些訓練是否能讓工學院的學生,發揮藝術素養推廣到其他領域,值得商榷,但 Linux Kernel hackers 做到了。前幾天在 IRC 上聊到 LKML (Linux Kernel Mailing-List) 有一份由 Rusty Russell 所提交的 p转载 2017-06-21 17:12:12 · 4411 阅读 · 0 评论 -
libuv download
http://cpansearch.perl.org/src/TYPESTER/UV-0.24/deps/转载 2017-06-21 18:02:13 · 1098 阅读 · 0 评论 -
高性能的iocp网络设计思路
IOCP是什么就不用介绍了,为什么要用IOCP就更不用提及。这里我们只简单讨论IOCP开发的一个思路,即能提高性能又能隆低开发复杂性。“即能提高性能又能隆低开发复杂性”?觉得我说的有矛盾吗?不是复杂的代码才能换来高效吗?其实不一定,我认为简单是一切事务的根本,就像遗传学的四个规则就造就了地球千变万化的生命世界。我们通常看到网上的代码示例都是一个IOCP句柄,多个IO线程和多个处理线程,由于转载 2017-07-03 16:46:59 · 657 阅读 · 0 评论 -
linux中使用select和epoll确定异步connect连接是否成功 标签: 网络编程服务器异步connectSO_ERRORsocket 2016-07-31 23:07 1008人阅读 评
linux中使用select和epoll确定异步connect连接是否成功标签: 网络编程服务器异步connectSO_ERRORsocket2016-07-31 23:07 1008人阅读 评论(2)收藏举报分类: 服务器开发日记(7) 版权声明:本文为博主原创文章,未经博主允许不得转载。服务器开发中网络编程转载 2017-06-13 10:32:45 · 869 阅读 · 0 评论 -
Winsock 2 I/O Methods 5 Part 11
Winsock 2 I/O Methods 5Part 11 What do we have in this chapter 5 part 11?Testing the Client-server ProgramCompletion Ports and Overlapped I/OPer-handle Data and Per-I/O Operatio转载 2017-06-14 10:25:57 · 563 阅读 · 0 评论 -
epoll基本原理及使用框架
epoll基本原理及使用框架epoll是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它不会复用文件描述符集合来传递结果而迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready转载 2017-06-14 10:52:17 · 398 阅读 · 0 评论 -
epoll的ET和LT模式详解
epoll的ET和LT模式详解标签: socket工作buffer测试io任务2009-08-25 07:08 17825人阅读 评论(5)收藏举报分类: linux/unix服务器(121) Linux开发c/c++(203) 版权声明:本文为博主原创文章,未经博主允许不得转载。从man手册中,得到ET和转载 2017-06-14 10:52:57 · 531 阅读 · 0 评论 -
彻底学会使用epoll(二)——ET和LT的触发方式
彻底学会使用epoll(二)——ET和LT的触发方式2014-06-03 22:34:18分类: LINUX分析了ET和LT的实现方式,那么分析他们的触发方式就容易多了。我们通过实现分析知道LT模式下epoll_wait被唤醒可以通过两种方式(图中红线和蓝线),而ET模式只能通过一种方式(图中红线)。所以ET模式下能被唤醒的情况,LT模式下一定也能被唤醒。我们先来讨论特殊情况(转载 2017-06-14 10:54:03 · 256 阅读 · 0 评论 -
Linux Socket 事件触发模型 epoll 示例 这里会写一个用C语言的TCP服务器的完全实现的简单程序
背景介绍通常的网络服务器实现,是对每一个连接使用一个单独的线程或进程。对高性能应用而言,由于需要同时处理非常多的客户请求,所以这种方式并不能工作得很好,因为诸如资源使用和上下文切换所需的时间影响了在一时间内对多个客户端进行处理。另一个可选的途径是在一个单独的线程里采用非阻塞的I/O,这样当可以从一个socket中读取或写入更多数据时,由一些已经准备就绪的通知方式来告知我们。这篇文章介绍 L转载 2017-06-15 17:44:18 · 3442 阅读 · 0 评论