有了协程之后为什么还需要线程,线程和协程的使用场景分别是什么

有了协程之后为什么还需要线程,线程和协程的使用场景分别是什么

  • 线程和进程是操作系统或库(pthread)提供的,是已经存在的概念。Go语言,Python语言,C++语言里的协程是异步函数,类似普通函数,可以挂起或恢复执行。协程是比线程更轻量级的概念。使用协程可以让我们不用创建线程或线程池。

  • 如果主协程里面执行了耗时的子协程,子协程会挂起到后台执行,主协程仍然可以执行其它的任务。多个挂起的子协程会同时等待。比如下面3个子协程分别需要耗时1秒,3秒,5秒,它们总的耗时比最多的5秒多一点,而不是9秒(1+3+5)。每个子协程在后台执行完耗时操作,会通知主协程,把结果返回给主协程。

fun_a(); //1 sec
fun_b(); //3 sec
fun_c(); //5 sec