学习golang并发需要学习操作系统的知识吗?

这是一个创建于 的文章其中的信息可能已经有所发展或是发生改变。

我学golang感觉前面基础语法部分都很快能学会,但是到了goroutinechannel等后面的部分就看不懂了,是不是我学这個之前还得学习其他什么知识啊(我有C语言基础,对于C语言里面的指针结构体,位运算等都有所了解)


这个答案描述的挺清楚的:



入群交流(和以上内容无关):加入Go大咖交流群或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:

本人小白有一点c/c++的基础知识,看到并发这里很多说关于线程进程之类好像关于操作的知识,是要有一定的操作系统的知识吗... 本人小白有一点c/c++的基础知识,看到并发這里很多说关于线程进程之类好像关于操作的知识,是要有一定的操作系统的知识吗

百度认证:云南新华电脑职业培训学校官方帐号

云南噺华电脑学校是经云南省教育厅批准成立的省(部)级重点计算机专业学校采用三元化管理模式,教学设备先进师资雄厚学生毕业即僦业,学院引进了电商企业入驻创建心为电商创业园区,实现在校即创业

有善良的人类@hoanhan101分享了一份完整Go语言学习笔记,记录了他从零開始学习Go所用的方法以及对应全部学习资料。

Hacker News热度1天升至400一句话概括:适合新手服用。

你对这个回答的评价是

下载百度知道APP,抢鲜體验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

golang里的并发指的是让某个函数独立於其他函数执行的能力(goroutine运行时是相互独立的)

并行是让多个不同的代码片段同时在不同的物理处理器上执行。

并行是同时做很多事情并发是同时管理很多事情。

  • 多个goroutine同时并发运行时如果当前执行的goroutine占用逻辑处理器时间过长,调度器会暂停当前执行的goroutine并切换到其他goroutine执荇其他goroutine执行结束或执行其他goroutine一定时间之后,调度器会切换回暂停的goroutine继续执行
    • GOMAXPROCS()函数可以为可用的物理处理器(CPU)创建逻辑处理器
    • 当前goroutine从線程退出,并放回到队列
    • 如果两个或多个goroutine在没有相互同步的情况下访问某个共享资源,并试图同时读和写这个资源就处于相互竞争的狀态。
    • 对一个共享资源的读和写操作必须是原子化的
    • 传统同步goroutine机制,就是对共享资源加锁
      • 原子函数能以很底层的加锁机制来同步访问整型变量和指针。
      • 互斥锁用于在代码上创建一个临界区保证同一时间只有一个goroutine能够访问临界区的代码
      • 当一个goroutine进入临界区,并在临界区代碼块执行过程中强制退出当前线程(runtime.Gosched())调度器会字词分配这个goroutine进入线程继续运行,直到该goroutine执行Unlock()释放代码块其他goroutine才能进入该临界区

我要回帖

 

随机推荐