Goroutine与主进程的通信

还记得前半年去某条面试,面试小哥问我,当一个进程启动多个goroutine时,某个goroutine挂了,如何让主进程知道,当时大概知道可以通过context这个包来实现,但是当时没有具体去了解和熟悉这块,在这里再总结下。

子goroutine与主线程同步的集中方式:

  • channel: 每个goroutine往主进程的chan写数据,然后由主进程去读取,直到读取完了全部goroutine的chan就算运行完毕,此时主进程即可正常退出。这种方式是子线程通知主线程结束.
  • context: 使用context中的cancel,这种模式是主线程通知子线程结束
  • sync.WaitGroup: 通过Add方法设置等待子goroutine的数量,使用Done方法设置等待子goroutine的数量减1,当等待数量为0时,Wait函数退出.

Linux下快速构建Android编译环境

背景: 在移动互联网时代,大多数的企业内部都有移动客户端,而移动客户端又因为OS的不同产生了两个派系,即安卓(Android)苹果(IOS),而对于互联网技术从业者来说,这两者最直接的区别就是开源闭源,因而也导致了在构建移动客户端时,为了整体的稳定性和可靠性的考虑(甚至有成本的考虑),需要进行分别编译,本篇文章记录下如何在Linux环境下构建Android编译环境.