Go语言并发,Golang并发

并发指在同一时间内可以执行多个任务。并发编程含义比较广泛,包含多线程编程、多进程编程及分布式程序等。本章讲解的并发含义属于多线程编程。

Go 语言通过编译器运行时(runtime),从语言上支持了并发的特性。Go 语言的并发通过 goroutine 特性完成。goroutine 类似于线程,但是可以根据需要创建多个 goroutine 并发工作。goroutine 是由 Go 语言的运行时调度完成,而线程是由操作系统调度完成。

Go 语言还提供 channel 在多个 goroutine 间进行通信。goroutine 和 channel 是 Go 语言秉承的 CSP(Communicating Sequential Process)并发模式的重要实现基础。本章中,将详细为大家讲解 goroutine 和 channel 及相关特性。
本章内容:
1. Go语言并发简述(并发的优势)
2. Go语言goroutine(轻量级线程)
3. Go语言并发通信
4. Go语言竞争状态简述
5. Go语言GOMAXPROCS(调整并发的运行性能)
6. 并发和并行的区别
7. goroutine和coroutine的区别
8. Go语言通道(chan)——goroutine之间通信的管道
9. Go语言并发打印(借助通道实现)
10. Go语言单向通道——通道中的单行道
11. Go语言无缓冲的通道
12. Go语言带缓冲的通道
13. Go语言channel超时机制
14. Go语言通道的多路复用——同时处理接收和发送多个通道的数据
15. Go语言RPC(模拟远程过程调用)
16. Go语言使用通道响应计时器的事件
17. Go语言关闭通道后继续使用通道
18. Go语言多核并行化
19. Go语言Telnet回音服务器——TCP服务器的基本结构
20. Go语言竞态检测——检测代码在并发环境下可能出现的问题
21. Go语言互斥锁(sync.Mutex)和读写互斥锁(sync.RWMutex)
22. Go语言等待组(sync.WaitGroup)
23. Go语言死锁、活锁和饥饿概述
24. Go语言封装qsort快速排序函数
25. Go语言CSP:通信顺序进程简述
26. Go语言聊天服务器
27. goroutine(Go语言并发)如何使用才更加高效?
28. Go语言使用select切换协程
29. Go语言加密通信