多进程 -- 4




200x200


引言此前一系列文章中,我们介绍了 Python 的threading 包中的一系列工具python 的线程Python 线程同步(一) -- 竞争条件与线程锁python

#python    #多进程    #multiprocessing   
nginx 的互斥锁nginx 自己实现了互斥锁,这样做的目的主要是为了兼容性,在不支持锁甚至不支持原子操作的环境下实现锁操作 nginx 锁结构ngx_accept_mutex 是一个 ngx_shmtx_t 结构体,ngx_shmtx_t 描述了 nginx 的锁结构// struct ngx_shmtx_t // nginx 锁结构 {{{ typedef struct { #if (NGX_HAVE_ATOMIC_OPS) // 是否支持原子操作 ngx_atomic_t *lock; #if (NGX_HAVE_POSIX_SEM) // 是否支持信号量 ngx_atomic_t *wait; ngx_uint_t semaphore; sem_t sem; #endif #else // 不支持原子操作则使用文件操作 ngx_fd_t fd; u_char *name; #endif ngx_uint_t spin; // 自旋锁标识 } ngx_shmtx_t; // }}}  nginx 使用这个结构实现了&n
#技术帖    #龙潭书斋    #fcntl    #进程   
迭代服务器迭代服务器的主进程即监听进程,进入监听状态后阻塞于 accept 操作,当监听进程 accept 到新的连接后,通过 fork 方式派生出来服务进程处理请求,处理完成后服务进程退出Apache web服务器就是以这种方式工作的优点开发流程清晰,并且服务进程与主进程隔离,安全性高缺点频繁 fork 带来机器性能的损耗,效率较低,适合请求并发量小,每次请求处理比较耗时的业务并发性服务器与迭代服务器相同,主进程进入监听状态,然后创建一个进程池或线程池,池中的业务进程或业务线程都在该 socket 上执行 accept 操作竞争请求处理权,进行请求的处理,主进程(主线程)负责维护进程池(线程池)中进程(线程)的数量和状态优点拥有较强的并发性能,可以处理并发请求量较大的应用场景异步服务器由于IO复用模型 select、epoll 等同时等待多个描述符的卓越性能,可以大大提高网络操作的效率,因此越来越多的开源力作使用异步模型进行服务的处理,如 memcache、redis、nginx 等在单进程中,监听线程通过 select、epoll 等IO复用模型进行整个服务中网络连接、读写等事件的监听优点网
#技术帖    #apache    #服务器    #技术分享   
概述实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实我们可以利用GDB的特点或者其他一些辅助手段来达到目的。此外,GDB 也在较新内核上加入一些多进程调试支持。follow-fork-mode 方法在2.5.60版Linux内核及以后,GDB对使用fork/vfork创建子进程的程序提供了follow-fork-mode选项来支持多进程调试。follow-fork-mode 的用法set follow-fork-mode [parent|child] parent: fork之后继续调试父进程,子进程不受影响。child: fork之后调试子进程,父进程不受影响。因此如果需要调试子进程,在启动gdb后:(gdb) set follow-fork-mode child 并在子进程代码设置断点。断开调试 -- detach-on-fork参数set detach-on-fork [on|off] on: 断开调试follow-fork-mode指定的进程。o
#技术帖    #linux    #unix    #c语言   



京ICP备15018585号