golang_并发: 并发的介绍(简介)

版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87867273

并发

并行(parallel): 同一时刻,有多条指令在多个处理器上同时执行.

并发(concurrency): 同一时刻,只有一条指令执行,但多个进程被快速的轮换执行.宏观上是多个进程同时执行,微观上不是同时执行的.

  • 程序:一个公司 进程:一个程序可以有多个进程 。项目
  • 线程:进程系统资源消耗过多 ,cpu的基本执行单位,一个进程有多个线程。小组
  • 协程:一个线程有多个协程。个人
  • go程:用GO语言实现的协程-goroutine
进程并发

进程并发时会出现的问题?

问题一.系统开销比较大,占用资源比较多,开启进程数量比较少。

问题二. 在unix/linux系统下,还会产生“孤儿进程”和“僵尸进程”

线程并发

**线程同步:**线程按照预定的先后次序进行运行。

实现线程同步的方法(加锁)

​ 互斥锁:每个线程在操作资源时给资源加互斥锁,操作完解锁。谁拿到锁谁执行,拿不到锁的阻塞。

​ 读写锁:读写锁允许更高的并行性。其特性为:写独占,读共享。当既有读又有写的时候写锁优先。读写锁适合于对数据读的次数远大于写的情况

协程并发

协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。一个线程中可以有任意多个协程。在协程中,调用一个任务就像调用一个函数一样,消耗的系统资源最少,但能达到进程、线程并发相同的效果。

函数层面的并发

Go并发

Go在语言级别支持协程,也就是说通过Go的语法就支持协程。

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/87867273