C++多线程并发(linux系统)

同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。

每个进程都有一个非负整数作为唯一的进程ID,用来表示各个进程,

进程创建:可以通过调用fork()或vfork()函数来创建新进程。在创建新进程时,要进行资源拷贝。常见的拷贝方式有三种:(1)共享    (2)直接拷贝    (3)Copy or Write 方式。

fork函数   #include <unistd.h>      pid_t fork (void);

函数调用失败会返回-1. 调用成功会返回两个值:(1)在调用进程也就是父进程中,返回子进程ID。  (2)在子进程中,返回值为0. 因此可以通过返回值来区分子进程还是父进程。

 fork使用场景

  • 守护进程

    为了保护父进程不被kill,或父进程异外退出后仍可再次启动(或后台运行),就执行fork()让子进程监控主进程的运行状态,根据监听保护父进程的运行。

  • 框架扩展

    父进程只负责创建子进程,子进程去执子任务,这些任务可能多变、可能更新频繁,配合fork()exec()函数,保证了父进程的稳定,同时避免频繁更新程序。

    

 

posted @ 2017-07-14 10:21  c++c鸟  阅读(327)  评论(0编辑  收藏  举报