心法(七): 并发与通道"/>
Go语言入门心法(七): 并发与通道
Go语言入门心法(一): 基础语法
Go语言入门心法(二): 结构体
Go语言入门心法(三): 接口
Go语言入门心法(四): 异常体系
Go语言入门心法(五): 函数
并行与并发认知升维:
go语言中协程与并发认知
(1) go语言的最大特点,是从语言层面支持并发
(2) Go语言的最大优势在于并发与性能,其性能可以媲美C和C++,并发在网络编程中更是至关重要
(3) 有事光靠硬件的提升无法满足高并发的需求的,因此需从程序的角度来解决高并发问题
(4) 通常并发指在同一段时间内,程序可以执行多个任务;几乎所有的语言都支持并发,而go语言最大的特点就是从语言层面支持并发
(5) 并发编程通常包括: 多线程编程,多进程编程,一家分布式编程
(6) 调用栈: 调用栈是计算机科学中存储有关正在运行的子程序的消息栈,经常被用于存放子程序的返回地址。在调用任何子程序中,主程序都必须暂存子程序运行完毕后应该返回到的地址。
因此,如果被调用的子程序还要调用其他子程序,其自身的返回地址必须存入调用栈,在其自身运行完毕后再取回。
(7) 并发与并行区别
7.1: 并行(parallelism):指在同一时刻,有多条指令在多个处理器上同时运行
7.2: 并发(concurrency):指在同一时刻,只能有一条指令执行,但是多个进程指令被快速第轮换执行,得到宏观上有多个进程同时执行的效果,
但是在微观上并不是同时执行,只是把时间片分为了若干段,使得多个进程快速交替执行。
一: go语言并发与通道
package mainimport ("fmt""time"
)/*
go语言中协程与并发认知(1) go语言的最大特点,是从语言层面支持并发(2) Go语言的最大优势在于并发与性能,其性能可以媲美C和C++,并发在网络编程中更是至关重要(3) 有时光靠硬件的提升无法满足高并发的需求的,因此需从程序的角度来解决高并发问题(4) 通常并发指在同一段时间内,程序可以执行多个任务;几乎所有的语言都支持并发,而go语言最大的特点就是从语言层面支持并发(5) 并发编程通常包括: 多线程编程,多进程编程,分布式编程(6) 调用栈: 调用栈是计算机科学中存储有关正在运行的子程序的消息栈,经常被用于存放子程序的返回地址。在调用任何子程序中,主程序都必须暂存子程序运行完毕后应该返回到的地址。因此,如果被调用的子程序还要调用其他子程序,其自身的返回地址必须存入调用栈,在其自身运行完毕后再取回。(7) 并发与并行区别7.1: 并行(parallelism):指在同一时刻,有多条指令在多个处理器上同时运行7.2: 并发(concurrency):指在同一时刻,只能有一条指令执行,但是多个进程指令被快速第轮换执行,得到宏观上有多个进程同时执行的效果,但是在微观上并不是同时执行,只是把时间片分为了若干段,使得多个进程快速交替执行。
*/
func main() {println(`go语言中协程与并发认知(1) go语言的最大特点,是从语言层面支持并发(2) Go语言的最大优势在于并发与性能,其性能可以媲美C和C++,并发在网络编程中更是至关重要(3) 有时光靠硬件的提升无法满足高并发的需求的,因此需从程序的角度来解决高并发问题(4) 通常并发指在同一段时间内,程序可以执行多个任务;几乎所有的语言都支持并发,而go语言最大的特点就是从语言层面支持并发(5) 并发编程通常包括: 多线程编程,多进程编程,分布式编程(6) 调用栈: 调用栈是计算机科学中存储有关正在运行的子程序的消息栈,经常被用于存放子程序的返回地址。在调用任何子程序中,主程序都必须暂存子程序运行完毕后应该返回到的地址。因此,如果被调用的子程序还要调用其他子程序,其自身的返回地址必须存入调用栈,在其自身运行完毕后再取回。(7) 并发与并行区别7.1: 并行(parallelism):指在同一时刻,有多条指令在多个处理器上同时运行7.2: 并发(concurrency):指在同一时刻,只能有一条指令执行,但是多个进程指令被快速第轮换执行,得到宏观上有多个进程同时执行的效果,但是在微观上并不是同时执行,只是把时间片分为了若干段,使得多个进程快速交替执行。在go语言中,编写并发程序时非常简单的,它不需要引入第三方额外的库,创建goroutine,只需要在函数调用语句前面添加go关键字,就可以创建并行执行单元。开发人员无须了解任何执行细节,调度器会自动将其安排到合适的线程上去执行;在并发编程里,通常要将一个过程分割成几块,然后让不同的goroutine各自负责其中的一块工作;`)println("该程序有三个模块,分别是main,Task1,Task2,这里使用了两个关键字go将task1和task2改变成了两个并的模块")println()go goroutineTask1()go goroutineTask2()for {fmt.Println(time.Now().Format("15:04:05"), "正在处理主进程的任务")time.Sleep(time.Second * 3)}}// goroutineTask1 定义任务执行函数
func goroutineTask1() {for {fmt.Println(time.Now().Format("15:04:05"), "正在执行Task1任务")time.Sleep(time.Second * 1) // 休眠1秒}
}// goroutineTask2 定义任务执行函数
func goroutineTask2() {for {fmt.Println(time.Now().Format("15:04:05"), "正在执行Task2任务")time.Sleep(time.Second * 2) // 休眠1秒}
}
运行效果:
D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPGoroutineToChannelGrammar_go.exe D:\program_file\go_workspace\org.jd.data\goroutine\OOPGoroutineToChannelGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPGoroutineToChannelGrammar_go.exego语言中协程与并发认知
(1) go语言的最大特点,是从语言层面支持并发
(2) Go语言的最大优势在于并发与性能,其性能可以媲美C和C++,并发在网络编程中更是至关重要(3) 有时光靠硬件的提升无法满足高并发的需求的,因此需从程
序的角度来解决高并发问题
(4) 通常并发指在同一段时间内,程序可以执行多个任务;几乎所有的语言都支持并发,而go语言最大的特点就是从语言层面支持并发(5) 并发编程通常包括: 多线程编程,多进程编程,分布式编程
的消息栈,经常被用于存放子程序的返回地址。在调用任何子程序中,主程序都必须暂存子程序运行完毕后应该返回到的地址。
的消息栈,经常被用于存放子程序的返回地址。在调用任何子程序中,主程序都必须暂存子程序运行完毕后应该返回到的地址。
因此,如果被调用的子程序还要调用其他子程序,其自身的返回地址必须存入调用栈,在其自身运行完毕后再取回。
(7) 并发与并行区别
7.1: 并行(parallelism):指在同一时刻,有多条指令在多个处理器上同时运行
7.2: 并发(concurrency):指在同一时刻,只能有一条指令执行,但是多个进程指令被快速第轮换执行,得到宏观上有多个进程同时执行的效果,
但是在微观上并不是同时执行,只是把时间片分为了若干段,使得多个进程快速交替执行。
在go语言中,编写并发程序时非常简单的,它不需要引入第三方额外的库,创建goroutine,只需要在函数调用语句前面添加go关键字,
就可以创建并行执行单元。开发人员无须了解任何执行细节,调度器会自动将其安排到合适的线程上去执行;
在并发编程里,通常要将一个过程分割成几块,然后让不同的goroutine各自负责其中的一块工作;该程序有三个模块,分别是main,Task1,Task2,这里使用了两个关键字go将task1和task2改变成了两个并的模块
21:31:14 正在处理主进程的任务
21:31:14 正在执行Task1任务
21:31:14 正在执行Task2任务21:31:16 正在执行Task1任务
21:31:17 正在执行Task1任务
21:31:17 正在执行Task2任务
21:31:18 正在处理主进程的任务
21:31:18 正在执行Task1任务
21:31:19 正在执行Task2任务
21:31:19 正在执行Task1任务
21:31:20 正在执行Task1任务
21:31:21 正在处理主进程的任务
21:31:21 正在执行Task2任务
21:31:21 正在执行Task1任务Process finished with the exit code -1073741510 (0xC000013A: interrupted by Ctrl+C)
更多推荐
Go语言入门心法(七): 并发与通道
发布评论