上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 27 下一页
  2015年12月11日
摘要: 进程池是由服务器预先创建的一组子进程,这些子进程书目在3~10个之间。线程池中的线程书目应该和CPU的数量差不多进程池(线程)中的所有子进程都运行着相同的代码,并具有相同的属性(比如优先级、PGID)。因为进程池在服务器启动之初就创建好了,所以每个子进程都相对“干净”。他们没有打开不必要的文件描述符... 阅读全文
posted @ 2015-12-11 15:48 已停更 阅读(359) 评论(0) 推荐(0)
摘要: 这里所指的线程是POSIX线程(简称pthread)线程同步方式:POSIX信号量、互斥锁、条件变量根据运行环境和调度者身份,线程可分为内核线程和用户线程创建线程和结束线程 1 #include 2 int pthread_create(pthread_t* thread, const pthre... 阅读全文
posted @ 2015-12-11 15:25 已停更 阅读(288) 评论(0) 推荐(0)
摘要: 13.1 fork系统调用1 #include 2 #include 3 pid_t fork( void )该函数每次调用返回两次,父进程返回子进程的PID,子进程返回0子进程的代码和父进程完全相同,同时它还会复制父进程的数据(堆栈数据和静态数据),数据的复制采用写时复制(copy on writ... 阅读全文
posted @ 2015-12-11 15:17 已停更 阅读(357) 评论(0) 推荐(0)
摘要: 这里不讲Libevent库的具体内容了,从宏观上对I/O库整体做个介绍Linux服务器程序必须处理三类事件:I/O事件,信号和定时事件统一事件源:统一处理这三类事件既能使代码简单易懂,又能避免一些潜在的逻辑错误。统一事件源的一般方法——利用I/O复用系统调用来管理所有事件可移植性:不同操作系统具有不... 阅读全文
posted @ 2015-12-11 15:15 已停更 阅读(1083) 评论(0) 推荐(0)
摘要: 网络程序需要处理的第三类事件是定时事件,两种高效的管理定时器的容器:时间轮和时间堆11.1 socket选项so_rcvtimeo和so_sndtimeoSO_RCVTIMEO和SO_SNDTIMEO选项分别用来设置socket接收数据超时时间和发送数据超时时间。因此这两个选项仅对数据接收和发送相关... 阅读全文
posted @ 2015-12-11 11:19 已停更 阅读(252) 评论(0) 推荐(0)
摘要: 信号是由用户、系统、或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常linux信号可由如下条件产生:前台进程,用户可以通过输入特殊的终端符发送信号(ctrl + c 中断)系统异常系统状态变化运行kill命令或调用kill函数10.1 linux信号概述一个进程给其他进程发送信号... 阅读全文
posted @ 2015-12-11 09:48 已停更 阅读(394) 评论(0) 推荐(0)
  2015年12月10日
摘要: I/O复用使得程序能够同时监听多个文件描述符,适用于以下情况:客户端同时处理多个socket,比如非阻塞connect客户端同时处理用户输入和网络连接,比如聊天室程序TCP服务器同时处理监听socket和连接socket,这是IO复用最多的用法服务器要同时处理TCP请求和UDP请求,比如回射服务器服... 阅读全文
posted @ 2015-12-10 11:38 已停更 阅读(474) 评论(0) 推荐(0)
  2015年12月9日
摘要: 8.1 服务器模型 c/s模型 p2p模型 实际使用的P2P模型通常带有一个专门的发现服务器,提供查找服务 8.2 服务器编程框架 I/O处理单元是服务器管理客户连接的模块 一个逻辑单元通常是一个进程或线程,服务器通常由多个逻辑单元,实现对多个客户任务的并行处理 8.3 I/O模型 socket在创 阅读全文
posted @ 2015-12-09 16:57 已停更 阅读(1020) 评论(0) 推荐(0)
摘要: 1.Linux服务器程序一般以后台进程形式运行。后台进程又称守护进程(daemon),它没有控制终端,因而不会意外接收到用户输入。父进程通常为init(PID为1的进程)2. Linux服务器程序常有一套日志系统,至少能输出日志到文件,有的高级服务器能输出到专门的udp服务器。大部分后台程序都在/v... 阅读全文
posted @ 2015-12-09 13:23 已停更 阅读(309) 评论(0) 推荐(0)
摘要: 6.1 pipe函数pipe函数创建一个管道,用于实现进程间通信1 #include2 int pipe(int fd[2]);参数包含两个文件描述符fd[0]和fd[1],往fd[1]写入的数据可以从fd[0]读出默认情况下这对文件描述符都是阻塞的。如果用read调用读取一个空管道,read将会阻... 阅读全文
posted @ 2015-12-09 13:21 已停更 阅读(288) 评论(0) 推荐(0)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 27 下一页