![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
apue
心.跳
这个作者很懒,什么都没留下…
展开
-
多进程编程具体实现方法
Linux下可以通过fork()系统调用来创建一个子进程,fork,英文解释就是“分叉”,当我们通过系统调用fork(),就创建了一个子进程。fork()系统调用有两个返回值,其中一个返回给父进程,其返回值是子进程的PID(process id),另一个返回给子进程,其返回值是0。所以可以通过其返回值来判断当前的代码是在父进程还是子进程运行,如果其返回值大于0,说明在父进程运行,如果fork()系...原创 2019-03-01 16:36:45 · 895 阅读 · 0 评论 -
多路复用之epoll
一、为什么要用epoll?在高并发的情况下,我们可以在服务器端用多路复用的方法来处理,具体的多路复用方法有select(),poll()和epoll()。但与epoll()相比,select()和poll()都有一些比较明显的缺点,其具体的缺点如下:1.select()中单个进程所能监视的文件描述符存在限制,通常是1024个;并且select()采用轮询的方式扫描文件描述符,文件描述符越多,其...原创 2019-03-28 19:36:50 · 513 阅读 · 0 评论 -
进程间通信方法(inter-procession communication)
在fork之后,子进程和父进程就分叉了,至于父子进程哪一个先运行,是由操作系统进程调度算法决定的。如果想要父子协同工作,可以采用原语的办法解决。那么当多个进程需协同工作共同处理某一个任务时,这时就需要进程间的同步和数据交流。常用的进程间通信方法有:1.信号(signal):信号用于通知接收进程某个事件已经发生。2.管道(pipe):管道是一种半双工的通信方式,数据在同一时刻只能单向流动,而且...原创 2019-06-27 20:03:47 · 291 阅读 · 0 评论 -
多路复用之select
内核提供的多路分离函数select()是建立IO多路复用模型的基础。select()可以避免同步非阻塞模型中的轮询等待的问题。在这种模式下,我们先将需要进行IO操作的socket加入到select中,然后便阻塞等待select()系统调用返回。有数据到达时,socket便被激活,select函数返回,此时用户线程发起read请求,读取数据便继续执行。select虽然在流程上与同步阻塞IO相同,并且...原创 2019-07-24 11:40:01 · 445 阅读 · 0 评论 -
多线程编程原理简要分析
线程是进程的一条执行路径。在UNIX系统下,线程常被称为轻量级的进程。同一主线程下的所有子线程都在统一进程空间运行,所以多个线程将共享进程中的全部系统资源,如虚拟地址空间,文件描述符等;但同一进程下的各个线程都有其各自的调用栈(call stack),寄存器环境(register context)和线程本地存储(thread-local storage),一个进程可以有很多线程,不同线程执行不同的...原创 2019-08-02 16:11:22 · 566 阅读 · 0 评论