APUE
文章平均质量分 60
_lovjesus
这个作者很懒,什么都没留下…
展开
-
TCP_CORK解析
setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* cork */socket设置TCP_CORK该字段的作用: 现在让我们假设某个应用程序发出了一个请求,希望发送小块数据。我们可以选择立即发送数据或者等待产生更多的数据然后再一次发送两种策略。如果我们马上发送数据,那么交互性的以及客户/服务器型的应用程序将极大地受益。例如转载 2013-03-07 17:50:22 · 1255 阅读 · 0 评论 -
C的信号机制
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了几个简单的应用实例。 【关键字】软中断信号,signal,sigaction,kil转载 2014-01-21 18:00:12 · 617 阅读 · 0 评论 -
多进程和多线程比较
原文:http://blog.csdn.net/lishenglong666/article/details/8557215 很详细对比维度多进程多线程总结数据共享、同步数据共享复杂,需要用IPC;数据是分开的,同步简单因为共享进程数据,数据共享简单,但也是因为这个原因导致同步复杂转载 2013-05-22 13:54:15 · 1587 阅读 · 0 评论 -
线程池典型设计
这些天要写一个邮件迁移的并发任务,快有一年没真正写C了,决定用C写。却不想碰到了难题:APUE竟忘干净了,好吧 复习一遍。这个架构很重要。这个任务一定完成!线程池设计模型:主线程吧新的作业放到一个工作队列中,由三个工作线程组成的线程池从队列中移除作业,每个线程并不是任意的处理从队列顶端取出的作业,而是由主线程控制作业的分配,主线程再每个待处理作业的结构中放置处理改作业的线程ID,每个工作线原创 2013-05-20 13:17:36 · 1407 阅读 · 0 评论 -
线程和进程的通讯方式
进程的通讯方式:1.管道(pipe)及有名管道(named pipe):管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。2.信号(signal):信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一致的。转载 2013-05-27 16:20:03 · 662 阅读 · 0 评论 -
关于线程池问题
原文:http://blog.chinaunix.net/uid-26548237-id-3197974.html线程的取消点:根据POSIX标准,pthread_join()、pthread_testcancel()、pthread_cond_wait()、 pthread_cond_timedwait()、sem_wait()、sigwait()等函数以及read()、write()等转载 2013-05-27 16:08:57 · 582 阅读 · 0 评论 -
负载均衡
原文转载:http://blog.chinaunix.net/uid-26548237-id-3363911.html作者:gfree.wind@gmail.com博客:blog.focus-linux.net linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxerQQ技术群:4367710 本文的copyleft归gfr转载 2013-05-27 16:38:18 · 748 阅读 · 0 评论 -
一个Linux下C线程池的实现
原文:http://hi.baidu.com/boahegcrmdghots/item/f3ca1a3c2d47fcc52e8ec2e1什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。转载 2013-05-27 16:59:08 · 515 阅读 · 0 评论 -
写Daemon程序框架
什么是Daemon:一个Daemon(或服务)是一个被设计成自动运行的后台进程,它很少或者根本就不需要用户干预。Apache服务http daemon就是这样的一个例子。他在后台等待监听某个端口,根据请求的类型,为页面或者脚本服务。在Linux下建立一个daemon,需要以一个特定顺序使用一系列规则.了解它们如何工作,将帮助你理解daemon如何在Linux用户空间操作,也能调用内核操作。转载 2013-03-25 16:41:32 · 787 阅读 · 0 评论 -
setsockopt详细用法
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,转载 2013-05-27 16:31:15 · 505 阅读 · 0 评论 -
sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
1:struct sockaddr {unsigned short sa_family; /*地址家族,一般是“AF_xxx”的形式。好像通常大多用的是都是AF_INET*/char sa_data[14]; /* sa_data是14字节协议地址*/};2:sockaddr_in(在netinet/in.h中定义):stru转载 2013-03-07 14:53:08 · 1394 阅读 · 0 评论 -
epoll_create, epoll_ctl和epoll_wait .
名词解释:man epoll之后,得到如下结果: NAME epoll - I/O event notification facility SYNOPSIS #include DEscrīptION epoll is a variant of poll(2) that can be used either as Edg转载 2013-03-08 02:30:56 · 664 阅读 · 0 评论 -
EPOLLIN , EPOLLOUT , EPOLLPRI, EPOLLERR 和 EPOLLHUP事件
2.。。1、listen fd,有新连接请求,对端发送普通数据 触发EPOLLIN。2、带外数据,只触发EPOLLPRI。3、对端正常关闭(程序里close(),shell下kill或ctr+c),触发EPOLLIN和EPOLLRDHUP,但是不触发EPOLLERR 和EPOLLHUP。再man epoll_ctl看下后两个事件的说明,这两个应该是本端(server端)出错才触发的转载 2013-03-08 11:32:17 · 37392 阅读 · 2 评论 -
daemon
linux下常见的服务名带d结尾的:inetd、httpd、等都是守护进程,d字符表示daemon。普通进程的控制端依赖:每一个从某终端开始的进程都会依赖这个终端,也就是这个进程的控制端。当控制端被关闭时候进程一般也会被关闭。daemon进程编写步骤: 1:创建一个子进程,同事关闭父进程。该子进程就会变成init进程的子进程。 2:调用setsid创建一个新原创 2014-05-27 11:26:23 · 677 阅读 · 0 评论