进程间通信(一)——管道和FIFO

摘要: 1. 概述管道没有名字,适用于有亲缘关系的进程间。FIFO指first in first out,有一个路径名与之关联,从而允许无亲缘关系的进程间使用。亦称:命名管道named pipe。两者都是单向数据流(半双工管道),具有随进程的持续性,数据都是先进先出,在进程间通信不需要某种形式的同步。2.管... 阅读全文
posted @ 2014-08-01 20:50 hancmhi 阅读(421) 评论(0) 推荐(0) 编辑

TCP并发服务器(三)——预创建子进程,accept文件锁

摘要: 1.说明基于System V内核的实现可能不支持多个进程在同一个监听描述符上调用accept。需要在accept前后放置某种形式的锁。这里采用fcntl的文件上锁功能,属于记录锁的一种。在性能上慢于下节要讲的互斥锁。2.代码#include "unp.h"#include #include ... 阅读全文
posted @ 2014-07-25 11:23 hancmhi 阅读(400) 评论(0) 推荐(0) 编辑

TCP并发服务器(四)——预创建子进程,accept互斥锁

摘要: 1.说明Posix文件上锁可移植到所有Posix兼容系统,但是涉及到文件系统操作,可能比较费时。本次使用线程上锁保护accept,这不仅适用于同一进程中各线程之间上锁,也适用于不同进程之间上锁。2.进程间使用互斥锁要求(1) 互斥锁变量必须存放在由所有进程共享的内存区。(2) 必须告知线程函数库这是... 阅读全文
posted @ 2014-07-25 11:22 hancmhi 阅读(436) 评论(0) 推荐(0) 编辑

<unix网络编程> 的环境配置

摘要: 的环境配置首先在网上下载UNP的库文件,然后就可以安装学了。我的系统环境:2.6.32-131.0.15.el6.i686 #1 SMP Sat Nov 12 17:30:50 CST 2011 i686 i686 i386 GNU/LinuxLSB Version: :base-4.0-ia32... 阅读全文
posted @ 2014-07-24 23:07 hancmhi 阅读(694) 评论(0) 推荐(0) 编辑

TCP并发服务器(五)——每个客户一个线程

摘要: TCP并发服务器(五)——每个客户一个线程1.说明前面4个版本都是关于进程的,可以将进程改为线程来实现。这个最简单的版本也快于前面的所有预先派生进程的版本。2.代码#include "unpthread.h"void sig_int(int signo){ DPRINTF("sig_int()... 阅读全文
posted @ 2014-07-24 21:59 hancmhi 阅读(463) 评论(0) 推荐(0) 编辑

TCP并发服务器(二)——预创建子进程,accept不上锁

摘要: TCP并发服务器(二)——预创建子进程,accept不上锁1.说明这是预创建进程中速度最快的。适用于源自BSD的内核,但是accept是一个库函数的System V可能不允许这么做(因此需要accept上锁保护)。2.优缺点无需引入父进程执行fork的开销就能处理新的客户。缺点时必须在启动阶段猜测需... 阅读全文
posted @ 2014-07-24 09:52 hancmhi 阅读(1131) 评论(0) 推荐(0) 编辑

TCP并发服务器(一)——每个客户一个子进程

摘要: TCP并发服务器(一)——每个客户一个子进程1.说明这是最传统的并发服务器,对于每一个客户请求fork一个子进程。问题在于每次fork一个子进程比较耗费时间,下面会讲预创建进程。程序代码基于UNP的库。程序在使用进程的模式下是最慢的。2.代码#include "unp.h"int main(int ... 阅读全文
posted @ 2014-07-23 22:33 hancmhi 阅读(365) 评论(0) 推荐(0) 编辑

TCP并发服务器(六)——创建线程池,每个线程accept,accept使用互斥锁保护——基于UNP代码

摘要: TCP并发服务器(六)——创建线程池,每个线程accept,accept使用互斥锁保护——基于UNP代码1.说明预创建一个线程池,线程池中各个线程accept。主线程不做什么。这是Leader/Follower领导者/跟随者模式2.代码代码基于UNP的库函数我们没有让线程阻塞于accept, 而是选... 阅读全文
posted @ 2014-07-21 16:49 hancmhi 阅读(655) 评论(0) 推荐(0) 编辑

TCP并发服务器(七)——可动态增减的线程池,主线程accept——基于UNP代码修改

摘要: TCP并发服务器(七)——可动态增减的线程池,主线程accept——基于UNP代码修改1.说明线程池基于一个区间动态变化,在客户连接过多线程不够用时,动态增加一定数量的线程。在线程闲置数量多于一半时,动态减小线程数量到一个基准线。这个例子模式为:半同步/半异步(half-sync/half-asyn... 阅读全文
posted @ 2014-07-21 16:36 hancmhi 阅读(758) 评论(0) 推荐(0) 编辑

STL源码之vector

摘要: STL源码之vector1. SGI的vectorSGI stl vector继承子一个基类:template > class vector : protected _Vector_base在基类中定义了基本的一些操作,并且封装了了vector所需要的基本的三个指针:struct _Vector_... 阅读全文
posted @ 2014-07-12 21:05 hancmhi 阅读(336) 评论(0) 推荐(0) 编辑