东莞电商网站公司,营销推广文案,wordpress系统邮箱地址,网络营销管理的起点是每个连接对应一个线程 一个网络socket对应一个处理线程#xff0c;socket采用阻塞I/O模型#xff1b; 这种模型是小程序和java常用的策略#xff0c;对于交互式的长连接应用也是常见的选择(比如BBS)#xff0c;也常用来做内部服务器交互的模型。这种策略很难满足高性能程序… 每个连接对应一个线程 一个网络socket对应一个处理线程socket采用阻塞I/O模型 这种模型是小程序和java常用的策略对于交互式的长连接应用也是常见的选择(比如BBS)也常用来做内部服务器交互的模型。这种策略很难满足高性能程序的需求好处是实现极其简单容易嵌入复杂的交互逻辑。Apache、ftpd等都是这种工作模式。 线程池 线程池一般有两种模式Half-Sync/Half-Async模式和Leader/Followers模式 半同步、半异步模式Half-Sync/Half-Async 这种模式有三部分组成异步事件接收层、事件同步队列、同步事件处理层 其中异步事件接收层为一个线程同步事件处理层可以有多个线程 它的工作流程很清晰 1. 异步线程负责检查网络的异步事件 2. 发生网络事件时异步线程把网络事件放入事件队列 3. 同步线程从队列中获取网络事件并执行同步的读或写操作 这个过程需要注意的是不要引起两个同步线程同时接收或发送一个socket的情况。 领导者、追随者模式Leader/Followers 这种模式与Half-Sync/Half-Async完全不同没有事件队列没有固定的事件接收者每个线程都是事件接收者也是处理者 Leader/Followers的流程 1. 准备若干个线程用来处理大量的事件 2. 有一个线程作为Leader等待事件的发生其他的线程作为Follower仅仅是睡眠 3. 有事件需要处理时如果Leader能很快处理掉Leader会再次进入等待状态 4. 如果Leader不能马上处理完Leader则从Followers中指定一个新的Leader自己去处理事件不再当Leader 5. 被唤醒的Follower作为新的Leader等待事件的发生 6. 处理事件的线程处理完毕以后就会成为Follower的一员直到被唤醒成为Leader IOCP就是典型的L/F的工作模式当线程1从GetQueuedCompletionStatus这里返回后如果线程1的处理过程没有超过某个时间段而是很快就返回之后继续GetQueuedCompletionStatus那OS会让新到的数据从线程1的GetQueuedCompletionStatus获取这样就减少了线程的CONTEXT切换代码反之如果线程1处理时间比较长那么新到的数据将会由线程2的GetQueuedCompletionStatus获得 多进程模型 一个客户端对应一个进程来处理也是一种历史悠久的网络模型linux的典型例子就是inetd服务。这种方式用来处理间断性内部数据处理时比其常驻内存的stand-alone模式更节省系统资源。