无题
2022-5-25 实习Day44
1、汇出汇款,收款人清算渠道为境内外币可命中,swift不可命中问题排查 – 3小时 50%
2、代理行转汇退汇中退汇行swiftcode点击放大镜后不会展现信息,需输入条件,待改进 – 2小时 50%
3、汇出汇款会计科目中冗余配置修改及删除 – 2小时 70%
Golang编程学习(part 39)
1、goroutine基本介绍
【1】需求:需要统计1-9000000000的数字中哪些是素数
分析思路:
- 传统的方法就是使用一个循环,循环的判断各个数是不是素数。(很慢)
- 使用并发或者并行的方式,将统计素数的任务分配给多个goroutine去完成,这时就会使用到goroutine(速度提高4倍)
【2】进程和线程介绍
- 进程就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位
- 线程是进程的一个执行实例,是程序执行的最小单元,它是比进程更小的能独立运行的基本单位
- 一个进程可以创建和销毁多个线程,同一个进程中的多个线程可以并发执行
- 一个程序至少有一个进程,一个进程至少有一个线程
【3】程序、进程和线程的关系示意图
【4】并发和并行
多线程程序在单核上运行,就是并发(一段时间内单核执行多个程序)
多线程程序在多核上运行,就是并行(同一时刻执行多个任务)
示意图
【5】Go协程和Go主线程
Go主线程(有程序员直接称为线程/也可以理解成进程):一个Go线程上可以起多个协程,你可以这样理解,协程是轻量级的线程(编译器做优化)
Go协程的特点
- 有独立的栈空间
- 共享程序堆空间
- 调度由用户控制
- 协程是轻量级的线程
一个示意图
2、goroutine快速入门
【1】案例说明
请编写一个程序完成如下功能:
- 在主线程(可以理解成进程)中,开启一个goroutine,该协程每隔1秒输出“hello,world”
- 在主线程中方也每隔一秒输出“hello,golang”,输出10次后,退出程序
- 要求主线程和goroutine同时执行
- 华晨主线程和协程执行流程图
1 | package main |
1 | 输出的效果说明,main这个主线程和goroute协程同时执行 |
【2】主线程和协程执行流程图
【3】快速入门小结
- 主线程是一个物理线程,直接作用在cpu上的,是重量级的,非常消耗cpu资源
- 协程是从主线程开启的,是轻量级的线程,是逻辑态,对资源消耗相对较小
- Golang的协程机制是重要的特点,可以轻松的开启上万个协程。其他编程语言的并发机制是一般基于线程的,开启过多的线程资源消耗大,这里就凸显Golang在并发上的优势了
3、goroutine的调度模型
【1】MPG模型的基本介绍
【2】MPG模式运行的状态1
【3】MPG模式运行的状态2
4、设置Golang运行的cpu个数
【1】为了充分利用多核cpu的优势,在Golang程序中设置运行的cpu数目
1 | // go1.8后,默认让程序运行在多个核上,可以不用设置了 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KAZAMAのBlog!








