Linux之多进程线程之Fork函数

《ARM 嵌入式 Linux系统开发详解》弓雷,讲的看不明白。经网上百度后谈下个人看法:

根据代码打印来看,fork函数创建后回执行两次后面代码

第一次蓝线,在父进程内,pid返回为子进程id,else内语句会被执行

第二次红线,在子进程内,pid返回为0,else if内语句会被执行

 

1、分叉操作在时间线(timeline)上创建了一个分支,最后得到了两个独立存在的进程。幸好进程可以判断哪个是原进程哪个是子进程(通过查看fork函数的返回值)。因此它们所执行的操作不同(如果相同,那么还有什么意义?)。
2、在一个使用分叉的服务器中,每一个客户端机连接都利用分叉创造一个子进程。父进程继续监听新的连接,同时子进程处理客户端。当客户端的请求结束时,子进程就退出了。因此分叉的进程是并行运行的,客户端之间不必互相等待。
3、因为分叉有点耗费资源(每个分叉出来的进程都需要自己的内存),这就存在了另一个选择:线程。线程是轻量级的进程或子进程,所有的线程都存在于相同的(真正的)进程中,共享内存。资源消耗的下降伴随着一个缺陷:因为线程共享内存,所以必须确保它们的变量不会冲突,如果在同一时间修改同一内容,这就会造成混乱。这些问题都可以归结为同步问题。在现代操作系统中(Windows除外,它不支持分叉),分叉实际是很快的,现代的硬件能比以往更好地处理资源消耗。如果不想被同步问题所困扰,分叉是一个很好的选择。
--------------------- 
作者:iw1210 
来源:CSDN 
原文:https://blog.csdn.net/iw1210/article/details/51364729 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值