
服务器开发
文章平均质量分 87
mhtlee
这个作者很懒,什么都没留下…
展开
-
进程与线程的比较
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程 序健壮,但在进程切换时,耗费资源较大,效率要差一些。线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧原创 2014-03-16 21:11:40 · 524 阅读 · 0 评论 -
proc多线程访问ORACLE数据库
一.什么是多线程? 一个多线程的应用程序中,线程运行在共享的地址空间里。线程是在进程内部执行的“轻量”级子进程,它们共享代码段和数据段,但是有自己的程序计数器、寄存器和堆栈。全局变量和静态变量在线程之间是共享的,因此通常需要在程序中使用某种互斥机制来管理线程对这些变量的访问,互斥体Mutexes就是用来保证数据完整性的同步装置。 有关互斥体的更多讨论,参看多线程编程方面的文转载 2014-03-16 22:05:52 · 1633 阅读 · 0 评论 -
对象池
使用对象池加速游戏内存分配游戏开发中经常需要频繁产生、销毁大量对象,内存本身够不够用是一方面,尤其是在手机等内存本来就有限的设备上面,另外一点是分配的速度不会对游戏体验造成影响,也就是不能影响帧率。相比内存池,对象池更易用更容易管理,而且还可以利用脏数据,也就是上次被回收掉的对象的数据。而且偶尔的空间分配失败其实不是那么重要(后面会讲怎么在会失败的情况下完成分配任务),游戏转载 2014-03-16 21:09:25 · 496 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂转载 2014-04-16 11:45:16 · 550 阅读 · 0 评论 -
epoll的ET模式和LT模式
前几天回答一个问题,是关于我们项目中使用的epoll模式的,因为记不大清了,感觉应该使用的就是epoll的高速模式,也就是ET(edge-trigger)模式。这两天闲暇的时候,打开代码又看了一下,在epoll事件注册时并未标记ET模式,看来实际使用的是epoll默认的LT(level-trigger )模式,为什么呢?使用LT意味着 只要 fd 处于 readable/writable 状态转载 2014-04-16 15:23:15 · 722 阅读 · 0 评论 -
epoll的原理和用法
设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一个时刻只有几十个或几百个TCP连接时活跃的(接收到TCP包),也就是说,在每一时刻,进程值需要处理这100万连接中的一小部分连接。那么,如何才能高效地处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux内核2.4版转载 2014-05-02 18:15:32 · 560 阅读 · 0 评论 -
KeepAlive 选项
在 Apache 中,打开和关闭 KeepAlive 功能,服务器端会有什么异同呢? 先看看理论分析。 打开 KeepAlive 后,意味着每次用户完成全部访问后,都要保持一定时间后才关闭会关闭 TCP 连接,那么在关闭连接之前,必然会有一个Apache 进程对应于该用户而不能处理其他用户,假设 KeepAlive 的超时时间为 10 秒种,服务器每秒处理 50个独立用户访转载 2014-04-08 22:49:11 · 815 阅读 · 0 评论 -
keepalive源码学习
start_vrrp_child 1,创建子进程 2,父进程执行 thread_add_child,并推出 2.1 定义新的 thread_t 对象,并进行根据给定参数进行初始化,线程id,处理函数等 vrrp_respawn_thread原创 2016-03-11 11:59:00 · 1269 阅读 · 0 评论