文章 2024-08-08 来自:开发者社区

Go 面试题:string 是线程安全的吗?

面试题如下: 如标题所示,原题是:Go 中的 string 赋值是线程安全的吗? 我们可以一起先想想答案,看看中不中。 线程安全是什么 线程安全是指在...

Go 面试题:string 是线程安全的吗?
文章 2023-02-27 来自:开发者社区

为什么遍历 Go map 是无序的?原生map为什么是非线程安全的?

 参考:大佬文章一、为什么遍历 Go map 是无序的?代码层原因:for range map 在开始处理循环逻辑的时候,就做了随机播种,用于决定从哪里开始循环迭代。更具体的话就是根据随机数,选择一个桶位置作为起始点进行遍历迭代。编辑结果:因此每次重新 for range map,你见到的结果都是不一样的。那是因为它的起始位置根本就不固定!根本原因:你想问为什么要这么做?当然是官方有意....

为什么遍历 Go map 是无序的?原生map为什么是非线程安全的?
文章 2023-02-27 来自:开发者社区

Go context 原理(channel广播机制 + mutex线程安全)

Go context 原理简述context包构建了树型关系的Context。go Context底层实际上是通过使用 channel + mutex 来实现的。channel负责在父级节点cancel()后的相关子协程之间广播通信,而mutex则保证了ctx在多个 goroutine 之间传递时的线程安全。使用context时,首先要创建一个顶级的context,也就是context.Back....

文章 2022-11-08 来自:开发者社区

一文搞懂Go语言互斥锁、读写锁【线程安全】

文章目录前言一、互斥锁是什么?1.概念2.未加锁3.加锁之后二、读写锁【效率革命】1.为什么读写锁效率高2.使用方法三、sync.once1.sync.once产生背景:2.sync.once机制概述:3.sync.once注意点:4.使用方法四、atomic原子包操作总结GO GO GO !前言单个线程时数据操作的只有一个线程,数据的修改也只有一个线程参与,数据相对来说是安全的,多线程时对数据....

文章 2021-09-23 来自:开发者社区

为什么 Go map 和 slice 是非线程安全的?

非线程安全的例子slice我们使用多个 goroutine 对类型为 slice 的变量进行操作,看看结果会变的怎么样。如下:func main() { var s []string for i := 0; i < 9999; i++ { go func() { s = append(s, "脑子进煎鱼了") }() } fmt.Printf("进了 %d 只煎鱼"...

为什么 Go map 和 slice 是非线程安全的?

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐

开发与运维

集结各类场景实战经验,助你开发运维畅行无忧

+关注
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等