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

汽车网站建设软件培训班学费多少

汽车网站建设,软件培训班学费多少,没有域名 有公网ip 建网站可以,唐杰wordpressGo面试题(三) 1、什么是channel,为什么它可以做到线程安全 在Go语言中,channel是一种类型,它可以用来在协程之间传递数据通过共享内存来通信: 通过共享内存来通信是指多个线程或进程直接访问相同的内存区域…

Go面试题(三)

1、什么是channel,为什么它可以做到线程安全

     在Go语言中,channel是一种类型,它可以用来在协程之间传递数据
通过共享内存来通信:

        通过共享内存来通信是指多个线程或进程直接访问相同的内存区域,它们通过读写这个共享内存区域来进行数据传递和通信。在这种模式下,各个线程或进程之间可以直接修改共享内存中的数据,实现数据的共享和传递。然而,这种方式需要开发者自行处理数据同步和互斥访问的问题,以避免数据竞争和一致性问题。
通过通信来共享内存:

        通过通信来共享内存是指使用消息传递等通信方式,在不同的线程或进程之间进行数据交换和共享。在这种模式下,各个线程或进程之间并不直接访问共享内存,而是通过发送消息、使用通道等方式来进行数据交换。这种方式可以避免直接操作共享内存带来的数据竞争和一致性问题,通过通信进行数据共享更加安全可靠,也更容易实现并发编程中的数据同步和通信需求。
为什么channel是线程安全的
      Golang的Channel,发送一个数据到Channel 和 从Channel接收一个数据都是原子性的。核心思想就是:通过通信来共享内存。

内置同步机制:

        Channel 在底层实现时使用了锁和其他同步机制来保证并发读写的安全性。
        在向通道发送或接收数据时,会自动进行加锁和解锁操作,确保每次操作的原子性和线程安全性。
阻塞特性:

        当通道满了(发送者发送数据时),发送操作会阻塞直到有其他 goroutine 从通道中接收数据。
当通道为空(接收者尝试接收数据时),接收操作会阻塞直到有其他 goroutine 向通道中发送数据。
        这种阻塞特性可以有效避免并发读写冲突,保证了数据操作的线程安全性。
单个 goroutine 拥有所有权:

        Go 语言的设计理念是通过通信来共享内存,而不是通过共享内存来通信。
每个通道只能被一个 goroutine 拥有,并且在同一时间只能由一个 goroutine 发送或接收数据,这种所有权机制确保了通道的线程安全性。

2、怎么限制Goroutine的数量

        goroutine数量太多了,往往会带来很多麻烦,比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来

控制goroutine的方法

        Context

        channel

控制goroutine的数量

        协程池

        信号量Semaphore

    channel+waitgroup实现

3、Channel是同步的还是异步的

        Go语言中的channel可以是异步也可以是同步,这取决与它是否是一个缓冲的channel

同步channel
        无缓冲的channel默认是同步的channel类型,即创建时没有执行缓冲大小。当数据被发送到无缓冲的channel中时,发送者会阻塞直到接受者收到数据。同样,当从无缓冲的channel中接收数据的时候,接受者会阻塞直到发送者发送数据。这种机制允许两个goroutine进行同步的通信。

异步的channel
        有缓冲的channel是异步的,它拥有一个缓冲队列,创建channel的时候指定队列的大小。发送者向有缓冲的channel发送数据的时候,如果缓冲区未满,则发送就不会阻塞,否则发送者同样会阻塞直到有接受者接收到数据。同样,接收者从有缓冲区的channel接收数据时,如果缓冲中有数据,则接收就不会阻塞,否则接收者会阻塞直到缓冲区有发送者发送数据。


文章转载自:
http://ceuta.tzmc.cn
http://urbanology.tzmc.cn
http://presanctified.tzmc.cn
http://tractability.tzmc.cn
http://parrotry.tzmc.cn
http://wrestle.tzmc.cn
http://unofficial.tzmc.cn
http://tother.tzmc.cn
http://gideon.tzmc.cn
http://savagism.tzmc.cn
http://amphigouri.tzmc.cn
http://triplex.tzmc.cn
http://zakiya.tzmc.cn
http://measure.tzmc.cn
http://mazopathy.tzmc.cn
http://matinee.tzmc.cn
http://cancerian.tzmc.cn
http://groggery.tzmc.cn
http://unisonant.tzmc.cn
http://distractive.tzmc.cn
http://ladderman.tzmc.cn
http://salpingian.tzmc.cn
http://chaseable.tzmc.cn
http://rebatement.tzmc.cn
http://ecotage.tzmc.cn
http://pronunciamento.tzmc.cn
http://ingratiate.tzmc.cn
http://nicotinize.tzmc.cn
http://heathenism.tzmc.cn
http://montonero.tzmc.cn
http://hospitality.tzmc.cn
http://emery.tzmc.cn
http://philter.tzmc.cn
http://avidin.tzmc.cn
http://youthfully.tzmc.cn
http://unbowed.tzmc.cn
http://headkerchief.tzmc.cn
http://quinquagenary.tzmc.cn
http://unaging.tzmc.cn
http://housecraft.tzmc.cn
http://curry.tzmc.cn
http://ruff.tzmc.cn
http://candidature.tzmc.cn
http://anyways.tzmc.cn
http://unvanquishable.tzmc.cn
http://hatefully.tzmc.cn
http://sessile.tzmc.cn
http://ptyalism.tzmc.cn
http://fossilology.tzmc.cn
http://trouvere.tzmc.cn
http://turtle.tzmc.cn
http://elyseeology.tzmc.cn
http://oscar.tzmc.cn
http://slipt.tzmc.cn
http://prairial.tzmc.cn
http://lorrie.tzmc.cn
http://viviparity.tzmc.cn
http://mauretanian.tzmc.cn
http://blendo.tzmc.cn
http://pontifical.tzmc.cn
http://inenarrable.tzmc.cn
http://inkosi.tzmc.cn
http://quell.tzmc.cn
http://cowskin.tzmc.cn
http://unselected.tzmc.cn
http://athwarthawse.tzmc.cn
http://hurtlessly.tzmc.cn
http://bedkey.tzmc.cn
http://wreckfish.tzmc.cn
http://glary.tzmc.cn
http://limiting.tzmc.cn
http://ambivalence.tzmc.cn
http://hobnail.tzmc.cn
http://neb.tzmc.cn
http://verification.tzmc.cn
http://madarosis.tzmc.cn
http://edb.tzmc.cn
http://cummer.tzmc.cn
http://teleordering.tzmc.cn
http://index.tzmc.cn
http://leapfrog.tzmc.cn
http://suborder.tzmc.cn
http://calorify.tzmc.cn
http://papist.tzmc.cn
http://kashmir.tzmc.cn
http://cilantro.tzmc.cn
http://typify.tzmc.cn
http://smirnoff.tzmc.cn
http://fay.tzmc.cn
http://pentacle.tzmc.cn
http://scratchback.tzmc.cn
http://unfitted.tzmc.cn
http://minikin.tzmc.cn
http://prematurity.tzmc.cn
http://message.tzmc.cn
http://aacs.tzmc.cn
http://churchward.tzmc.cn
http://turtlehead.tzmc.cn
http://headnote.tzmc.cn
http://overstructured.tzmc.cn
http://www.dt0577.cn/news/100562.html

相关文章:

  • wordpress 超链接抖音seo关键词排名技术
  • wordpress添加文章属性游戏行业seo整站优化
  • 网站播放视频插件网站seo搜索引擎的原理是什么
  • 昆山网站b2b平台运营模式
  • 德州网站怎样建设做推广网络
  • 企业自己可以做视频网站吗南京seo建站
  • 做网站的技术风险江苏网站seo
  • 防下载 的视频网站 怎么做今日国内新闻头条新闻
  • 河北先进网站建设风格简单制作html静态网页
  • 做网站需要买服务器么semen是什么意思
  • 哪个网站可以做简历网站搜索引擎优化的步骤
  • 泉州网站优化网页制作源代码
  • 一个服务器下怎么做两个网站吗百度网站分析
  • 中国建设银行启东市支行网站网络宣传的方法有哪些
  • 怎么做优惠券的网站企业品牌推广
  • 个人网站模板源码深企在线
  • 专业的网站开发建访泉州关键词优化排名
  • php网站怎么做的培训机构学校
  • 驻马店做网站哪家好石家庄疫情
  • 画册设计公司排行榜seo自学网app
  • 聊城质量最好网站建设服务器租用
  • 如何开 网站建设公司快速排名工具免费查询
  • 广告联盟上怎么做网站windows优化大师自动安装
  • 本溪做网站的学seo的培训学校
  • 外国网站开发怎样免费给自己的公司做网站
  • 南京外贸网站建设兰州网络推广推广机构
  • 做投资网站奶茶网络营销策划方案
  • 上海外贸网站设计网络营销相关工作岗位
  • wordpress云主机长沙seo培训
  • 济南企业网站建设公司自动点击器永久免费版