
服务器编程
文章平均质量分 58
le119126
这个作者很懒,什么都没留下…
展开
-
异步I/O
一。系统V和BSD派生的所有系统提供了转载 2014-07-31 16:19:59 · 913 阅读 · 0 评论 -
线/进程所持有资源以及子线/进程所继承资源
1.线程和进程的关系线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。2、线程和进程间的比较 子进程继承父进程的属性:转载 2015-12-05 17:03:44 · 1464 阅读 · 0 评论 -
构建C1000k服务器
一.修改最大打开文件数1.修改系统总共最大打开文件数在 /etc/sysctl.conf 文件末尾添加:fs.file-max = 1020000或者永久修改,*表示所有用户,可以改成某个用户名编辑 /etc/security/limits.conf 文件, 加入如下行:# /etc/security/limits.conf* hard nofile原创 2015-11-27 15:16:51 · 3426 阅读 · 0 评论 -
Linux内核参数的优化(Nginx)
《深入理解Nginx》-陶辉由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,使得Nginx可以拥有更高的性能。在优化内核时,可以做的事情很多,不过,我们通常会根据业务特点来进行调整,当Nginx作为静态Web内容服务器、反向代理服务器或是提供图片缩略图功能(实时压缩图片)的服务器时,其内核参数转载 2015-11-27 16:25:14 · 529 阅读 · 0 评论 -
libevent 和 libev 提高网络应用性能
libevent 和 libev 提高网络应用性能构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方 案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev转载 2015-11-24 18:29:03 · 539 阅读 · 0 评论 -
epoll EPOLLONESHOT 事件
eppll 即使使用ET模式,一个socket上的某个事件还是可能被触发多次,采用线程城池的方式来处理事件,可能一个socket同时被多个线程处理如果对描述符socket注册了EPOLLONESHOT事件,那么操作系统最多触发其上注册的一个可读、可写或者异常事件,且只触发一次。。想要下次再触发则必须使用epoll_ctl重置该描述符上注册的事件,包括EPOLLONESHOT 事件。例子:原创 2015-06-04 17:20:09 · 6838 阅读 · 2 评论 -
父子进程与父子线程退出分析
Linux下编程,线程、进程退出顺序问题纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处理呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处理呢?下面是我个人平时在笔记上做的一些象征性的总结,如果有疑问之处,大可提出,我一直认为怀疑是人类进步的根本所在。一、线程Linux线程创建函数为pthread_create(),默认规则是谁创建子线程,谁就要负责子线程转载 2015-08-01 11:40:53 · 2982 阅读 · 0 评论 -
线程进程通知
进程线程的等待通知:pipe :单向socketpair:双向eventfdeventfd 是一个比 pipe 更高效的线程间事件通知机制,一方面它比 pipe 少用一个 file descripor,节省了资源;另一方面,eventfd 的缓冲区管理也简单得多,全部“buffer” 只有定长8 bytes,不像 pipe 那样可能有不定长的真正 buffer。线程转载 2015-03-04 10:50:03 · 788 阅读 · 0 评论 -
linux c 多线程
一。线程同步原创 2014-08-08 17:03:33 · 827 阅读 · 0 评论 -
socket的I/O复用
socket 读、写、异常事件发生后的条件1.可读 socket读缓冲区有数据可读 对方的读一半关闭(对方用shutdown关闭读,或者正常调用close关闭掉socket,我们将收到FIN段,读操作会返回0) 如果是监听socket,已完成连接队列不为空时 socket发生一个错误待处理(错误可以通过ge转载 2015-04-04 16:48:23 · 611 阅读 · 0 评论 -
借shared_ptr实现copy on write 以减少锁的使用
shared_ptr是引用计数智能指针,如果当前只有一个观察者,那么引用计数为1,可以用shared_ptr::unique()来判断对于write端,如果发现引用计数为1,这时可以安全地修改对象,不必担心有人在读它。对于read端,在读之前把引用计数加1,读完之后减1,这样可以保证在读的期间其引用计数大于1,可以阻止并发写。比较难的是,对于write端,如果发现引用计数大于1,该如何转载 2015-03-11 09:33:30 · 605 阅读 · 0 评论 -
TCP网络编程最本质是的处理三个半事件
TCP网络编程最本质是的处理三个半事件 连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接 连接断开:主动断开(close、shutdown),被动断开(read返回0) 消息到达:文件描述符可读 消息发送完毕:这算半个。对于低流量的服务,可不必关心这个事件;这里的发送完毕是指数据写入操作系统缓冲区,将由TCP协议栈负责数据的发送与重传,不代表对方已转载 2015-03-03 09:11:42 · 1447 阅读 · 0 评论 -
定时函数
定时函数,用于让程序等待一段时间或安排计划任务首选timerfd_* 的原因:sleep / alarm / usleep 在实现时有可能用了信号 SIGALRM,在多线程程序中处理信号是个相当麻烦的事情,应当尽量避免nanosleep 和 clock_nanosleep 是线程安全的,但是在非阻塞网络编程中,绝对不能用让线程挂起的方式来等待一段时间,程序会失去响应。正确的做法是注转载 2015-03-03 15:24:37 · 808 阅读 · 0 评论 -
Linux服务器中的程序规范和技巧
摘自用 TCP/IP 进行网际互连原创 2014-06-30 22:17:04 · 604 阅读 · 0 评论 -
linux多进程编程
1.fork系统调用信号位图被清除,远原创 2014-08-08 14:54:30 · 700 阅读 · 0 评论 -
linux下进程间通信
1.文件2.文件锁3.管道pipe和命名管道FIFO4.信号5.套接字system V6.消息队列7.共享内存8.信号量posix9.互斥量10.条件变量11.读写锁转载 2015-04-07 10:38:08 · 659 阅读 · 0 评论