当前位置:   article > 正文

多进程和多线程的区别(转载)

多进程和多线程的区别

转载地址:http://blog.csdn.net/hairetz/article/details/4281931/

一.为何需要多进程(或者多线程),为何需要并发?

这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。

我想,只要你不是整天都写那种int main()到底的代码的人,那么或多或少你会遇到代码响应不够用的情况,也应该有尝过并发编程的

甜头。就像一个快餐点的服务员,既要在前台接待客户点餐,又要接电话送外卖,没有分身术肯定会忙得你焦头烂额的。幸运的是确实

有这么一种技术,让你可以像孙悟空一样分身,灵魂出窍,乐哉乐哉地轻松应付一切状况,这就是多进程/线程技术。

并发技术,就是可以让你在同一时间同时执行多条任务的技术。你的代码将不仅仅是从上到下,从左到右这样规规矩矩的一条线执行。你可以一条线在main函数里跟你的客户交流,另一条线,你早就把你外卖送到了其他客户的手里。

所以,为何需要并发?因为我们需要更强大的功能,提供更多的服务,所以并发,必不可少。

 

二.多进程

什么是进程。最直观的就是一个个pid,官方的说法就:进程是程序在计算机上的一次执行活动。

说得简单点,下面这段代码执行的时候

1 int main()
2 
3 {
4 
5 printf(”pid is %d/n”,getpid() );
6 
7 return 0;
8 
9 }

进入main函数,这就是一个进程,进程pid会打印出来,然后运行到return,该函数就退出,然后由于该函数是该进程的唯一的一次执行,所以return后,该进程也会退出。

看看多进程。linux下创建子进程的调用是fork();

 1 #include <unistd.h>
 2 #include <sys/types.h> 
 3 #include <stdio.h>
 4 
 5  
 6 
 7 void print_exit()
 8 {
 9        printf("the exit pid:%d/n",getpid() );
10 }
11 
12 main () 
13 { 
14    pid_t pid; 
15    atexit( print_exit );      //注册该进程退出时的回调函数
16       pid=fork(); 
17         if (pid < 0) 
18                 printf("error in fork!"); 
19         else 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/151342
推荐阅读
相关标签
  

闽ICP备14008679号