【go基础】协程管理
从一个错误案例开始起因是在工作中看到一段代码,感觉是程序遇到异常而卡住的原因,起了两个协程,其中一个等待另一个完成后开始,二者通过channel进行消息传递。后一个协程在完成时使用了goto语句。程序最后为select{}永久卡死,等待前面启动的两个协程去跑完就完事了。 原来的代码(铁有问题,不能用在生产上): 123456789101112131415161718 ticker := ti...
从一个错误案例开始起因是在工作中看到一段代码,感觉是程序遇到异常而卡住的原因,起了两个协程,其中一个等待另一个完成后开始,二者通过channel进行消息传递。后一个协程在完成时使用了goto语句。程序最后为select{}永久卡死,等待前面启动的两个协程去跑完就完事了。 原来的代码(铁有问题,不能用在生产上): 123456789101112131415161718 ticker := ti...
并发编程基本概念串行、并发与并行 串行:我们都是先读小学,小学毕业后再读初中,读完初中再读高中。 并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。 并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)。 进程、线程和协程 进程(process):程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 线程(thread):操作系统基于进程开启的轻量级...