返回顶部
首页 > 资讯 > 后端开发 > GO >go 原子/线程保存中的append() 是吗?
  • 743
分享到

go 原子/线程保存中的append() 是吗?

2024-04-04 23:04:44 743人浏览 独家记忆
摘要

最近发现不少小伙伴都对golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《go 原子/线程保存中的append() 是吗?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读

最近发现不少小伙伴都对golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《go 原子/线程保存中的append() 是吗?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

阅读几个列表后,我想将每个列表中的所有行添加到一个大数组中。我在它自己的 goroutine 中运行每个列表读取器。我可以在读取后立即追加一行吗?

这个帖子能保存吗,还是会在我手里爆炸?

type listHolder {
  entries []entry
}

func (h *listHolder) readAllLists(s []list) {
  c := make(chan list)
  var wg sync.WaitGroup

  for _, l := range s {
    wg.Add(1)
    go h.readSomeList(&wg, l)
  }

  c.close()
  wg.Wait()  
}

func (h *listHolder) readSomeList(wg *sync.WaitGroup, l list) {
  defer wg.Done()
  for e := range extractEntry(l) {
    h.entries = append(h.entries, newEntry(e))
  }
}


解决方案


像这样就可以了。或者您可能想想出一种不同的架构,例如使用通道将更新提供给单个 go 例程

type listHolder {
  entries []entry
  m sync.Mutex
}

func (h *listHolder) readAllLists(s []list) {
  c := make(chan list)
  var wg sync.WaitGroup

  for _, l := range s {
    wg.Add(1)
    go h.readSomeList(&wg, l)
  }

  c.close()
  wg.Wait()  
}

func (h *listHolder) readSomeList(wg *sync.WaitGroup, l list) {
  defer wg.Done()

  for e := range extractEntry(l) {
    h.m.Lock()
    h.entries = append(h.entries, newEntry(e))
    h.m.Unlock()
  }
}

今天关于《go 原子/线程保存中的append() 是吗?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: go 原子/线程保存中的append() 是吗?

本文链接: https://lsjlt.com/news/596755.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • go 原子/线程保存中的append() 是吗?
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《go 原子/线程保存中的append() 是吗?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读...
    99+
    2024-04-04
  • Java线程安全中的原子性是什么
    本篇内容介绍了“Java线程安全中的原子性是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!何为原子性原子性:一条线程在执行一系列程序指令...
    99+
    2023-07-05
  • Java 内存模型与原子性:探索多线程编程中的原子操作与内存屏障
    Java 内存模型概述 Java 内存模型(JMM)定义了 Java 虚拟机(JVM)如何处理多线程对共享内存的访问。JMM 规定了线程对共享变量的读写操作必须是原子的,即一个线程对共享变量的修改操作要么全部执行,要么完全不执行,不会出...
    99+
    2024-02-04
    Java 内存模型 原子性 内存屏障 volatile 变量
  • go是C语言中的保留字吗?
    深入探讨:go是C语言中的保留字吗? 在C语言中,有一些被保留的关键字(Reserved Keywords),这些关键字在编程中有特殊的作用,不能用作标识符命名。这些保留字包含了各种数...
    99+
    2024-03-15
  • 什么是原子操作?深入浅析go中的原子操作
    在我们前面的一些介绍 sync 包相关的文章中,我们应该也发现了,其中有不少地方使用了原子操作。 比如 sync.WaitGroup、sync.Map 再到 sync.Pool,这些结构体的实现中都有原子操作的身影。 原子操作在并发编程中是...
    99+
    2023-05-14
    原子操作 后端 Go
  • 单线程是go语言的特性吗
    单线程不是go语言的特性,go语言是多线程的。Golang的线程模型是MPG模型,整体上Go程与内核线程是多对多对应的,因此Go一定是多线程模式的;其中M与内核线程是1比1对应,然后多个G与多个M对应,P指的是上下文资源。本教程操作环境:w...
    99+
    2023-05-14
    go语言 Golang
  • Java线程安全中的原子性浅析
    目录何为原子性解决方法CAS机制(Compare And Swap)何为原子性 原子性:一条线程在执行一系列程序指令操作时,该线程不可中断。一旦出现中断,那么就可能会导致程序执行前后...
    99+
    2023-02-21
    Java线程原子性 Java线程安全原子性
  • 单线程究竟是Go语言的特色吗?
    单线程究竟是Go语言的特色吗? Go语言作为一种新兴的编程语言,以其简洁、高效、并发等特点吸引着越来越多的开发者。其中一个备受关注的特性就是其采用单线程模型来处理并发。那么,单线程究竟...
    99+
    2024-03-15
    go语言 单线程 特色 标准库
  • Java多线程的原子性,可见性,有序性你都了解吗
    目录1.原子性问题2.可见性问题3.有序性问题总结问题: 1.什么是原子性、可见性、有序性? 1. 原子性问题 原子性、可见性、有序性是并发编程所面临的三大问题。 所谓原子操作,就是...
    99+
    2024-04-02
  • spring中的bean是线程安全的吗?
    spring 中的 bean 是线程安全的吗?Spring 不保证 bean 的线程安全。默认 spring 容器中的 bean 是单例的。当单例中存在竞态条件,即有线程安全问题。如下面的例子计数类package constxiong.in...
    99+
    2017-06-17
    java教程 spring java
  • spring中的bean是线程安全的吗
    Bean不是线程安全的,容器并没提供Bean的线程安全策略,对于原型Bean,每次创建一个新对象,也就是线程之间并不存在Bean共享,自然是不会有线程安全的问题,而对于单例Bean,所有线程都共享一个单例实例Bean,因此是存在资源的竞争,...
    99+
    2024-04-02
  • java中多线程的原理是什么
    java中多线程的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据...
    99+
    2023-06-14
  • java 中多线程的原理是什么
    今天就跟大家聊聊有关java 中多线程的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.基本概念程序、进程、线程程序(program)是为完成特定任务、用某种语言编写的一...
    99+
    2023-06-20
  • Java对象的内存分配过程是如何保证线程安全的
    本篇内容介绍了“Java对象的内存分配过程是如何保证线程安全的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在开始进入正题之前,请允许我问一...
    99+
    2023-06-16
  • Java对象的内存分配是怎么保证线程安全的
    本篇内容主要讲解“Java对象的内存分配是怎么保证线程安全的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java对象的内存分配是怎么保证线程安全的”吧!JVM内存结构,是很重要的知识,相信每一...
    99+
    2023-06-16
  • OpenMP创建线程中的锁及原子操作性能分析
    这篇文章主要讲解了“OpenMP创建线程中的锁及原子操作性能分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“OpenMP创建线程中的锁及原子操作性能分析”...
    99+
    2024-04-02
  • Java中线程中断机制的原理是什么
    本篇文章为大家展示了Java中线程中断机制的原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Thread.interrupt真的能中断线程吗在平时的开发过程中,相信都会使用到多线程,在使用多...
    99+
    2023-06-17
  • go语言中线程和进程的区别是什么
    区别:1、线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位。2、一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。3、线程上下文切换比进程上下文切换要快得多。4、进程切换需要的资源很最大,效率很低;线程切换需要的...
    99+
    2023-05-14
    go语言 Golang
  • go语言中协程与线程的区别是什么
    区别:1、一个线程可以多个协程,一个进程也可以单独拥有多个协程;2、线程是同步机制,而协程则是异步;3、协程能保留上一次调用时的状态,线程不行;4、线程是抢占式,协程是非抢占式的;5、线程是被分割的CPU资源,协程是组织好的代码流程,协程需...
    99+
    2023-05-14
    Golang go语言 协程 线程
  • Java中多线程同步的原理是什么
    Java中多线程同步的原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、线程的先来后到我们来举一个Dirty的例子:某餐厅的卫生间很小,几乎只能容纳一个人如厕。为了保...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作