当前位置: 首页 > news >正文

网站建设需求调研问卷泰安百度推广电话

网站建设需求调研问卷,泰安百度推广电话,网站建设程序都有哪些,网站建设丶金手指下拉14Golang中的goroutine进程和线程说明并发和并行并发并行Go协程和Go主线程案例小结goroutine的调度机制MPG模式基本介绍MPG模式运行的状态1MPG模式运行的状态2设置GOlang运行的CPU数不同 goroutine之间如何通讯使用全局变量加锁同步改进程序进程和线程说明 1.进程就是程序在操作… Golang中的goroutine进程和线程说明并发和并行并发并行Go协程和Go主线程案例小结goroutine的调度机制MPG模式基本介绍MPG模式运行的状态1MPG模式运行的状态2设置GOlang运行的CPU数不同 goroutine之间如何通讯使用全局变量加锁同步改进程序进程和线程说明 1.进程就是程序在操作系统中的一次执行过程是系统进行资源分配和调度的基本单位2.线程是进程的一个执行实例是程序执行的最小单元它是比进程更小的能独立运行的基本单位3.一个进程可以创建和销毁多个线程同一个进程中的多个线程可以并发执行4.一个程序知道有一个进程一个进程至少有一个线程 并发和并行 1、多线程程序在单核上运行就是并发 2、多线程程序在多核上运行就是并行 并发 因为是在CPU上比如都有10个线程每个线程执行10毫秒(进行轮询操作)从人的角度看好像这10个线程都在运行但是从微观上看在某一个时间点看其实只有一个线程在执行这就是并发 并行 因为是在多个CPU上(比如有10个CPU)比如有10个线程每个线程执行10毫秒(各自在不同的CPU上执行)从人的角度看这10个线程都在运行并且从微观上看在某一个时间点看也同时有10个线程在执行这就是并行 Go协程和Go主线程 1.Go主线程(有程序员直接称为线程/也可以理解成进程)一个Go线程上可以起多个协程可以理解为协程是轻量级的线程 2.Go协程的特点 有独立的栈空间共享程序堆空间调度由用户控制协程是轻量级的线程 案例 编写一个程序 1、在主线程中(也可以理解成进程)中开启一个goroutine改协程每隔1秒输出“helloworld” 2、在主线程中也每隔1秒“hellogolang”输出10次后退出程序 3、要求主线程和goroutine同时执行 4、画出主线程和协程执行流程图 package mainimport (fmtstrconvtime )func test() {for i : 1; i 10; i {fmt.Println(test () hello,world strconv.Itoa(i))time.Sleep(time.Second)} }func main() {go test() //开启了一个协程for i : 0; i 10; i {fmt.Println(main() hello,golang strconv.Itoa(i))time.Sleep(time.Second)} } /* main() hello,golang0 test () hello,world1 test () hello,world2 main() hello,golang1 main() hello,golang2 test () hello,world3 test () hello,world4 main() hello,golang3 main() hello,golang4 test () hello,world5 test () hello,world6 main() hello,golang5 main() hello,golang6 test () hello,world7 test () hello,world8 main() hello,golang7 main() hello,golang8 test () hello,world9 main() hello,golang9 test () hello,world10 main() hello,golang10*/小结 1、主线程是一个物理线程直接作用在CPU上的。是重量级的非常消耗CPU资源2、协程从主线程开启的是轻量级的线程是逻辑态。对资源消耗相对小3、Golang的协程机制时重要的特点可以轻松的开启上万个协程。其他编程语言的并发机制时一般基于线程的开启过多的线程资源耗费大这里就突显Golang在并发上的优势了 goroutine的调度机制 MPG模式基本介绍 MPG模式运行的状态1 1、当前程序有三个M如果三个M都在一个CPU运行就是并发如果在不同的CPU运行就会并行2、M1,M2,M3正在执行一个GM1的协程队列有三个M2的协程队列有三个M3的协程队列有两个3、从下图可以看到Go的协程是轻量级的线程是逻辑态的Go可以容易的起上万个协程4、其他程序c/java的多线程往往是内核态的比较重量级几千个线程可能耗光CPU MPG模式运行的状态2 1、分两部分来看2、原来的情况是M0主线程正在执行Go协程另外有三个协程在队列等待3、如果Go协程阻塞比如读取文件或者数据库等4、这时就会创建M1主线程(也可能是从已有的线程池中取出M1)并且将等待的3个协程挂到M1下开始执行M0的主线程下的Go任然执行文件io的读写5、这样的MPG调度模式可以既让GO执行同时不会让队列的其他协程一直阻塞任然可以并发/并行执行6、等到GO不阻塞了M0会被放到空闲的主线程继续执行(从已有的线程池中取)同时GO又会被唤醒 设置GOlang运行的CPU数 介绍为了充分利用多CPU的优势在golang中设置运行的CPU数目 1.go1.8后默认让程序运行在多个核上可以不用设置了 2.go1.8前要设置以下可以更高效的利用CPU package mainimport (fmtruntime )func main() {//获取当前系统CPU数量num : runtime.NumCPU()//这里设置num-1的CPU运行go程序runtime.GOMAXPROCS(num)fmt.Println(num, num) } //num8不同 goroutine之间如何通讯 1、全局变量加锁同步 2、channel 使用全局变量加锁同步改进程序 因为没有对全局变量m加锁因此会出现资源争夺问题代码会出现错误提升concurrent map writes解决方案加入互斥锁数的阶乘很大结果会越界可以将求阶乘改成sum uint64(i)
http://www.hkea.cn/news/14339896/

相关文章:

  • 婚恋网站模板wordpress用户名忘记密码
  • 一般网站建设企业到哪里建网站
  • 厦门建设局官方网站西安那里做网站
  • 工业设计网站官网泰兴网站制作
  • 公司付网站会员费科目怎么做哈尔滨招聘网最新招聘信息网
  • 电脑网站制作网站平台
  • 站长之家 wordpress 流量统计网站建设优化推广哈尔滨
  • 建站小软件建立一个网站英语
  • 电子商务网站的重要性免费友情链接网
  • 单位网站建设管理情况佛山营销型网站
  • 儿童网站模板免费下载网站建设方案前言
  • 如何建造免费的网站企业网站开发技术
  • 学校内部网站开发价格惠州网站建设佳木斯
  • 个人工作室的网站校友网站建设的重要性
  • 网站怎么做适配通州网站建设
  • 网站注册流程和费用什么软件可以推广
  • 免费做店招哪个网站好优惠网站如何做
  • 购物商城外贸网站建设建设网站坪山
  • 帝国网站增加流量有什么网站可以做初中试题
  • wap网站域名申请青海省住房城乡建设厅网站
  • 建设网站政策风险江门市住房建设管理局网站
  • 网站建设对公司有什么好处交互设计网站推荐
  • 地信的网站建设广州网站建设q.479185700強
  • 网站描述和关键词怎么写wordpress语言的设置中文版
  • 做电子商务网站建设工资多少钱电子商务网站开发岗位
  • 乐清网站建设乐清长沙seo外包平台
  • 如何免费申请网站做国外衣服的网站有哪些
  • 腾讯网站安全检测做垂直网站
  • 适合设计制作公司的网站asp远吗python在线编程视频
  • 网站建设最新签约漯河英文网站建设