2013年7月29日

UNIX网络编程——线程池模式比较(ICE线程池模型和L/F领导者跟随者模式)

摘要: 程池模式一般分为两种:L/F领导者与跟随者模式、HS/HA半同步/半异步模式。 HS/HA 半同步/ 半异步模式 :分为三层,同步层、队列层、异步层,又称为生产者消费者模式,主线程处理I/O事件并解析然后再往队列丢数据,然后消费者读出数据进行应用逻辑处理; 优点:简化编程将低层的异步I/O和高层同... 阅读全文

posted @ 2013-07-29 22:36 胡永光 阅读(212) 评论(0) 推荐(0) 编辑

UNIX网络编程——常用服务器模型总结

摘要: 下面有9种服务器模型分别是:迭代服务器。并发服务器,为每个客户fork一个进程。预先派生子进程,每个子进程都调用accept,accept无上锁保护。预先派生子进程,以文件锁的方式保护accept。 预先派生子进程,以线程互斥锁上锁的方式保护accept。预先派生子进程,由父进程向子进程传递套接口... 阅读全文

posted @ 2013-07-29 18:52 胡永光 阅读(171) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(总结)

摘要: (1)当系统负载较轻是,每来一个客户请求现场派生一个子进程为之服务的传统并发服务器程序模型就足够了。这个模型甚至可以与inetd结合使用,也就是inetd处理每个连接的接收。我们的其他意见是就重负荷运行的服务器而言的,譬如Web服务器。 (2)相比传统的每个客户fork一次设计示范,预先创建一个子... 阅读全文

posted @ 2013-07-29 18:12 胡永光 阅读(134) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(八)

摘要: TCP预先创建线程服务器程序,主线程统一accept 最后一个使用线程的服务器程序设计示范是在程序启动阶段创建一个线程池之后只让主线程调用accept并把每个客户连接传递给池中某个可用线程。 本设计示范的问题在于主线程如何把一个已连接套接字传递... 阅读全文

posted @ 2013-07-29 17:17 胡永光 阅读(119) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(七)

摘要: TCP预先创建线程服务器程序,每个线程各自accept 前面讨论过预先派生一个子进程池快于为每个客户线程派生一个子进程。在支持线程的系统上,我们有理由预期在服务器启动阶段预先创建一个线程池以取代为每个客户线程创建一个线程的做法有类似的性能加速。本服务器的基本设计是预先创建一个... 阅读全文

posted @ 2013-07-29 16:46 胡永光 阅读(207) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(六)

摘要: TCP并发服务器程序,每个客户一个线程 前面讲述了,每个客户一个进程的服务器,或为每个客户现场fork一个子进程,或者预先派生一定数目的子进程。如果服务器主机支持线程,我们就可以改用线程以取代子进程。#include "unpthread.h"intmain(... 阅读全文

posted @ 2013-07-29 16:40 胡永光 阅读(125) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(五)

摘要: TCP预先派生子进程服务器程序,传递描述符 对预先派生子进程服务器程序的最后一个修改版本是只让父进程调用accept,然后把所接受的已连接套接字“传递”给某个子进程。这么做绕过了为所有子进程的accept调用提供上锁保护的可能需求,不过需要从父进程到子进程的某种... 阅读全文

posted @ 2013-07-29 16:34 胡永光 阅读(155) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(四)

摘要: TCP预先派生子进程服务器程序,accept使用线程上锁保护 我们使用线程上锁保护accept,因为这种方法不仅适用于同一进程内各线程之间的上锁,而且适用于不同进程之间的上锁。 为了使用线程上锁,我们的main、child_make和child_mai... 阅读全文

posted @ 2013-07-29 16:20 胡永光 阅读(106) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(三)

摘要: TCP预先派生子进程服务器程序,accept无上锁保护 我们的第一个“增强”型服务器程序使用称为预先派生子进程的技术。使用该技术的服务器不像传统意义的并发服务器那样为每个客户现场派生一个子进程,而是启动阶段预先派生一定数量的子进程,当各个客户连接到达时,这些子进程... 阅读全文

posted @ 2013-07-29 13:57 胡永光 阅读(136) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(二)

摘要: TCP并发服务器程序,每个客户一个子进程 传统上并发服务器调用fork派生一个子进程来处理每个客户。这使得服务器能够同时为多个客户服务,每个进程一个客户。客户数目的唯一限制是操作系统对以其名义运行服务器的用户ID能够同时有多个子进程的限... 阅读全文

posted @ 2013-07-29 13:38 胡永光 阅读(140) 评论(0) 推荐(0) 编辑

UNIX网络编程——客户/服务器程序设计示范(一)

摘要: 下面给出的是客户程序用于测试我们的服务器程序的各个变体。#include "unp.h"#define MAXN 16384 /* max # bytes to request from server */intmain(int argc, char **argv){ int i... 阅读全文

posted @ 2013-07-29 11:45 胡永光 阅读(176) 评论(0) 推荐(0) 编辑

UNIX网络编程——使用线程的TCP回射服务器程序

摘要: 同一进程内的所有线程除了共享全局变量外还共享:(1)进程指令;(2)大多数数据;(3) 打开的文件(即描述符);(4)信号处理函数和信号处置;(5)当前工作目录;(6)用户ID和组ID。不过每个线程有各自的:(1)线程ID;(2)寄存器集合,包括程序计数器和栈指针;(3)栈(用于存放局... 阅读全文

posted @ 2013-07-29 11:07 胡永光 阅读(139) 评论(0) 推荐(0) 编辑

导航