💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## **应用案例一:** 请完成goroutine和channel协同工作的案例,具体要求: 1)开启一个**writeData**协程,向管道**intChan**中写入50个整数. 2)开启一个**readData**协程,从管道**intChan**中读取**writeData**写入的数据。 3)注意: **writeData**和**readDate**操作的是同一个管道 4)主线程需要等待**writeData**和**readDate**协程都完成工作才能退出 <br> <br> ![](https://img.kancloud.cn/1e/6b/1e6b381bc769c8af851fdeb701155c6a_1209x994.png) <br> **运行结果** ``` 读取到数据为0 写入数据为0 写入数据为1 写入数据为2 写入数据为3 写入数据为4 写入数据为5 写入数据为6 写入数据为7 写入数据为8 写入数据为9 写入数据为10 写入数据为11 写入数据为12 写入数据为13 写入数据为14 写入数据为15 写入数据为16 写入数据为17 写入数据为18 写入数据为19 写入数据为20 写入数据为21 写入数据为22 写入数据为23 写入数据为24 写入数据为25 写入数据为26 写入数据为27 写入数据为28 写入数据为29 写入数据为30 写入数据为31 写入数据为32 写入数据为33 写入数据为34 写入数据为35 写入数据为36 写入数据为37 写入数据为38 写入数据为39 写入数据为40 读取到数据为1 写入数据为41 写入数据为42 读取到数据为2 读取到数据为3 读取到数据为4 读取到数据为5 读取到数据为6 读取到数据为7 读取到数据为8 读取到数据为9 读取到数据为10 读取到数据为11 读取到数据为12 读取到数据为13 读取到数据为14 读取到数据为15 读取到数据为16 读取到数据为17 读取到数据为18 读取到数据为19 读取到数据为20 读取到数据为21 读取到数据为22 读取到数据为23 读取到数据为24 读取到数据为25 读取到数据为26 读取到数据为27 读取到数据为28 读取到数据为29 读取到数据为30 读取到数据为31 读取到数据为32 读取到数据为33 读取到数据为34 读取到数据为35 读取到数据为36 读取到数据为37 读取到数据为38 读取到数据为39 读取到数据为40 读取到数据为41 读取到数据为42 读取到数据为43 写入数据为43 写入数据为44 写入数据为45 写入数据为46 写入数据为47 写入数据为48 写入数据为49 写入数据为50 读取到数据为44 读取到数据为45 读取到数据为46 读取到数据为47 读取到数据为48 读取到数据为49 读取到数据为50 ``` <br> <br> ## **应用案例二:** 阻塞 **问题:** 上面的代码如果,注销掉,go readData(intchan,exitchan),程序会怎么样?? **答:** 如果只向管道,写入数据,而没有读取,就会出现阻塞deadlock,原因是intchan 容量只有10,而writeData会写入50个数据,因此会阻塞在writeData的**intchan<-i** <br> <br> ### **应用案例三:** 需求:要求统计1-8000的数字中,哪些是素数?这个问题在本章开篇就提出了,现在我们有goroutine和channel的知识后,就可以完成了 分析思路: * 传统的方法,就是使用一个循环,循环的判断各个数是不是素数[ok]。 * 使用并发 **/** 并行的方式,将统计素数的任务分配给多个(4个)goroutine去完成,完成任务时间短。 1,画出分析思路2\. 代码实现 说明:使用goroutine完成后, 可以在使用传统的方法来统计一下,看看完成这个 任务,各自耗费的时间是多少?[用map保存primeNum]