--------【linux多进程并发编程】
文章平均质量分 77
奔跑吧,行者
这个作者很懒,什么都没留下…
展开
-
多进程并发编程----基于高级的预先创建进程池(accept使用线程上锁)的模型
本博文介绍如何使用线程对accept进程加锁保护。 使用线程对accept加锁,不仅适用于同一进程内各线程之间的上锁,同样适用于不同进程之间的上锁。 实现要点: 1 互斥变量必须存放在所有进程共享的内存区域内 2 告知线程函数库这是不同进程之间共享的互斥锁 服务端程序的代码如下: #include #include #include #include #include原创 2016-04-25 17:56:06 · 1725 阅读 · 0 评论 -
多进程并发编程----基于高级的预先创建进程池(accept使用文件上锁)的模型
本篇博文讲解如何使用fcntl文件上锁的方式对accept进行保护。 如果多个进程在引用同一个监听套接字的描述符上调用accept,对于不同的内核accept不一定都是原子操作。Berkeley的内核支持这种模型,而system V就会出现问题,那么我们的解决方法之一就是本博文讲解的使用文件上锁保护accept函数调用,保证任意时刻只有一个进程阻塞在accept,其他进程则阻塞在试图获取用于保护原创 2016-04-25 17:43:45 · 746 阅读 · 0 评论 -
多进程并发编程----基于高级的动态创建进程池的模型
此篇博文主要讲解如何动态创建进程的方法,此方法模型如下: main{ ps=socket(); bind(); listen(); while(1){ cs=accept(); if(cs){ pid=fork(); if(pid==0){//子进程处理 close(ps); do_child(cs); }原创 2016-04-21 18:01:03 · 1016 阅读 · 0 评论 -
多进程并发编程----基于高级的预先创建进程池(accept不上锁)的模型
此篇博文先介绍最简单的服务器并发模型,此模型的大概框架如下: main{ socket(); bind(); listen(); for(i=0;i pid=fork(); if(pid==0)//子进程 do_child(); } waitpid(); close(fd); } do_child(){ while(1){ accept(); read(); wr原创 2016-04-21 16:45:09 · 1119 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符案例
#include #include #include #include #include #include #include #include #include #include int send_fd(int fd, void *ptr, size_t nbytes, int sendfd) { struct msghdr msg; struct iovec iov[1]; union原创 2016-04-15 17:34:48 · 2092 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~socketpair函数简介
socketpair函数概要如下: #include #include int socketpair(int domain, int type, int protocol, int sv[2]); sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。 socketpair函数需要四个参数。他们是: 套接口的域原创 2016-04-15 17:13:37 · 1686 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~发送接收附属数据结构体介绍
附属信息可以包括0,1,或是更多的单独附属数据对象。在每一个对象之前都有一个struct cmsghdr结构。头部之后是填充字节,然后是对象本身。最后,附属数据对象之后,下一个cmsghdr之前也许要有更多的填充字节。在这一章,我们将 要关注的附属数据对象是文件描述符与证书结构。 下图显示了一个包含附属数据的缓冲区是如何组织的。 我们需要注意以下几点: cmsg_len与CMSG_LEN原创 2016-04-15 17:03:30 · 1351 阅读 · 0 评论 -
多进程并发编程----进程间传递文件描述符基础~发送接收附属数据函数介绍
如果fork进程之后,子进程如果想要传递描述给父进程一般使用socketpair函数。 此篇文章不介绍socketpair函数,二是介绍sendmsg和recvmsg函数,这两个函数隐藏的机构体有针对socket描述符的选项。 具体如下: 这两个函数为程序提供了一些其他的套接口I/O接口所不具备的高级特性。 从概念上说,sendmsg函数是所有写入函数的基础,而他是从属于套接口的。下面原创 2016-04-15 16:59:34 · 1199 阅读 · 0 评论