浅谈并发编程

最近在看golang,golang设计的重要出发点即为并发编程,作为一个unix-c程序员,这么多年确实在这块深有体会。下面详细谈谈自己的理解,白话文,只说原理

多进程

由fork产生,内核分配,数量有限,开销大,子进程和父进程独立,通过IPC管理,init pid 为0 , 程序创建的子进程,父进程消失后,自动继承给init,所以杀不干净,后面会有灾难,产生孤儿进程和僵尸进程

多线程

由pthread类函数创建,一个进程下可create多个线程,几个线程宏观并行执行,线程间可共享变量(进程不可以),通过互斥锁控制,各个线程间有简单的信号机制,线程通信采用全局变量(必须有锁)或消息(pipe或unix socket),进程挂了,线程自动消失

协程

语言有自己的调度器模块,属用户级线程,可以达到更高的并发量,例如go本身channel与gorontine的涉及本意就是一个pipeline模型。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值