首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏奔跑的蛙牛技术博客

    并发知识5

    锁和条件不能解决线程中的所有问题 账户1:200; 账户2:300; 线程1:从账户1转移300到账户2 线程2: 从账户2转移400到账户1 线程一和线程二都被阻塞了 两个账户的余额都不足以转账,两个线程无法执行下去 这样的状态称为死锁

    48120发布于 2018-09-05
  • 来自专栏Java职业技术分享

    并发模型比较

    这种无线程的设计在某些性况下优于 worker MPM,因为它可在应用于不具备线程安全的第三方模块上(如 PHP3/4/5),且在不支持线程调试的平台上易于调试,另外还具有比worker MPM更高的稳定性 参考: Node.js机制及原理理解初步 使用 libevent 和 libev 提高网络应用性能 ---- 5. 所以有一些新的编程模型来实现高并发,用消息传递来代替共享内存和锁。 参考: actor并发模型&基于共享内存线程模型 为什么Actor模型是高并发事务的终极解决方案? 如何深入浅出地解释并发模型中的 CSP 模型并发编程:Actors模型和CSP模型 ---- 总结 高并发的关键在于实现异步非阻塞,更加高效地利用 CPU。多线程可以达到非阻塞,但占用资源多,切换开销大。

    3.1K00发布于 2018-09-28
  • 来自专栏后端技术

    java 并发模型

    根据阅读注释和跟踪父类Queue源码,我们得知,BlockingQueue的方法主要分三类:

    53720发布于 2019-05-25
  • 来自专栏Java职业技术分享

    并发模型比较

    这种无线程的设计在某些性况下优于 worker MPM,因为它可在应用于不具备线程安全的第三方模块上(如 PHP3/4/5),且在不支持线程调试的平台上易于调试,另外还具有比worker MPM更高的稳定性 参考: Node.js机制及原理理解初步 使用 libevent 和 libev 提高网络应用性能 ---- 5. 所以有一些新的编程模型来实现高并发,用消息传递来代替共享内存和锁。 参考: actor并发模型&基于共享内存线程模型 为什么Actor模型是高并发事务的终极解决方案? 如何深入浅出地解释并发模型中的 CSP 模型并发编程:Actors模型和CSP模型 ---- 总结 高并发的关键在于实现异步非阻塞,更加高效地利用 CPU。多线程可以达到非阻塞,但占用资源多,切换开销大。

    2.4K00发布于 2018-09-21
  • 来自专栏ReganYue's Blog

    Go并发之CSP并发模型、协程并发

    Go并发之CSP并发模型、协程并发 什么是CSP并发模型 CSP 即通信顺序进程、交谈循序程序,又被译为交换消息的循序程序(communicating sequential processes),它是一种用来描述并发性系统之间进行交互的模型 CSP模型的最大优点是灵活。但是容易出现死锁的情况,且未给予直接的并行支持,并行需要建立在并发的基础之上。 在CSP模型里面,进程间需要经过一种被称为管道来进行通信。 通过管道能够实现百万级的并发。如果说线程是抢占式的,那么协程是协作式的。在协程里面,也是通过管道来调度的。 解放线程对CPU和内存的开销,线程是先占用CPU和内存后才调度,而协程是通过通信发送信号来调度,协程全是通过管道,由于协程的消耗比线程小很多,所以能够实现百万并发。 8G内存的电脑,用JAVA,C来做并发,差不多也就千级并发,而用GO语言,通过管道可以让并发能力得到很大提升。

    1.2K10发布于 2021-09-16
  • 来自专栏Golang语言社区

    Go语言并发模型:以并行处理MD5为例

    阅读建议 本文是"Go语言并发模型:像Unix Pipe那样使用channel" 一文的下半部分,但重点在于实践。如果你对 channel 已经比较熟悉,则可以独立阅读。 本文所使用的例子是批量计算文件的MD5值,实现了 linux 下的 md5sum 命令。我们首先会讲到 md5sum 的单线程版本,逐步深入到并发的初级和高级版本。 点击 serial.go 下载单线程版本的 md5sum。 并发版的 md5sum 点击 parallel.go 下载并发版 md5sum 的代码。 我们对并发读取的文件数目稍作限制,进而限制内存的分配。点击 bounded.go 查看限制并发版本的 md5sum。 为了实现限制的目的,我们创建固定数量的 goroutine 用于读取文件。 = nil { return nil, err } return m, nil } 关于Go语言并发模型,使用 Go内置的 channel 类型和 go 关键字实现高并发并发控制的主题就先到这里

    2.2K60发布于 2018-03-26
  • 来自专栏后端精进之路

    Java并发编程系列-(5) Java并发容器

    5 并发容器 5.1 Hashtable、HashMap、TreeMap、HashSet、LinkedHashMap 在介绍并发容器之前,先分析下普通的容器,以及相应的实现,方便后续的对比。 通过下面的例子,可以清楚的看到,21和5在原来的数组中都处于相同的位置,但是在新的数组中,21到了新的位置,位置为原来的位置加上16,也就是旧的Capacity;但是5还在原来的位置。 中继承过来的;5-6是LinkedHashMap独有的。 concurrencyLevel 并发度:默认16。 在高并发下的情况下如何保证取得的元素是最新的?

    49510编辑于 2023-10-19
  • 来自专栏运维开发王义杰

    Go: 并发模型详解

    Go语言的并发模型是基于CSP(Communicating Sequential Processes)理论的,该理论的核心思想是通过通信来共享内存,而不是通过共享内存来通信。 在Go语言中,并发主要依靠两个概念: Goroutine:轻量级的线程,由go关键字启动。 Channel:用于 goroutine 之间通信的管道。 Goroutine Goroutine 是 Go 语言中实现并发的核心机制。 Goroutine 和 Channel 的配合使用 Goroutine 和 Channel 可以配合使用来实现各种并发编程模式。 总结 Go 语言的并发模型是基于 CSP 理论的,通过 Goroutine 和 Channel 的配合使用,可以轻松地实现各种并发编程模式。这种并发模型具有高效、易用等特点,是 Go 语言的一大优势。

    49610编辑于 2024-02-26
  • 学习 Go并发模型

    先将数据拆分放入通道in := producer(1,2,3,4)// 处理数据ch := square(in)// 消费数据for ret := range ch {fmt.Printf("%3d",ret)}}扇形模型优化

    16900编辑于 2025-06-11
  • 来自专栏腾讯技术工程官方号的专栏

    20种不同并发模型示例,带你深入理解并发模型

    文末抽奖送书,欢迎参与~ 导语 曾看过很多并发模型相关的文章,但是这些文章大部分只讲了并发模型的实现原理,并没有给出具体的示例代码,看完总觉得对并发模型这个知识点是一知半解,不得要领。 为了掌握高并发模型,我这里抛砖引玉,实现了20种常见的并发模型,并对每种并发模型进行了性能压测和分析。由于本人水平有限,文章中难免有一些不准确或者纰漏的地方,欢迎大家批评指正。 5. 20种不同的并发模型 在本节,我们将展示20种不同的并发模型的具体实现。 ConcurrencyModel目录下的每一个子目录都对应一种并发模型的实现。 的并发模型是多进程抢锁,每个进程的流量负载会更均衡,但因为有锁,所以进程池1的并发模型性能比进程池2的并发模型低一些。 领导者/跟随者的并发模型和进程池1的并发模型很相似,这两个模型所有的指标都差异很小,领导者/跟随者的并发模型可以看到显式的使用锁,而进程池1的并发模型没有。

    1.5K12编辑于 2024-05-24
  • 来自专栏码农架构

    Java 并发编程:多线程并发内存模型

    Java内存模型 Java的世界也有属于它自己的内存模型,Java内存模型(Java Memory Model),简称JMM。 由于Java被定义成一种跨平台的语言,所以在内存的描述上面也要能是跨平台的,Java虚拟机试图定义一种统一的内存模型,能将各种底层硬件及操作系统的内存访问差异进行封装,使Java程序在不同硬件及操作系统上都能达到相同的并发效果 JMM可见性 在Java内存模型中,如果一个线程更改了共享变量的值,其他线程能马上知道这个更改,则我们说这个变量具有可见性。 要想深入了解多线程并发中的相关问题现象,对Java内存模型的深入研究是必不可少的。 它的定义必须考虑下面几个方面,其一是如何更加有效地提高线程的性能效率;其二是如何将底层物理硬件及操作系统的差异屏蔽掉提供统一的对外概念;最后是如何使它的模型既严谨又宽松,保证语义不会产生歧义和一些优化扩展

    1.1K50发布于 2020-12-14
  • 来自专栏互联网技术栈

    七周七并发模型

    image.png 七个模型来介绍并发与并行。 线程与锁:线程与锁模型有很多众所周知的不足,但仍是其他模型的技术基础,也是很多并 发软件开发的首选。 函数式编程:函数式编程日渐重要的原因之一,是其对并发编程和并行编程提供了良好的支 持。函数式编程消除了可变状态,所以从根本上是线程安全的,而且易于并行执行。 actor:actor模型是一种适用性很广的并发编程模型,适用于共享内存模型和分布式内存模型, 也适合解决地理分布型问题,能提供强大的容错性。 不过CSP模型侧重于传递信息的通道,而actor模型侧重于通道 两端的实体,使用CSP模型的代码会带有明显不同的风格。 数据级并行:每个笔记本电脑里都藏着一台超级计算机——GPU。  这个模型适用于解决并发问题、并行问题,还是两者皆可  这个模型适用于哪种并行架构  这个模型是否有利于我们写出容错性强的代码,或用于解决分布式问题的代码---- 个人介绍: 高广超:多年一线互联网研发与架构设计经验

    74320发布于 2018-12-12
  • 来自专栏数据云团

    并发篇-python传输模型

    画重点啦~ >传输模型 先来了解下基本模型 ? 能看懂上面的模型么?大致想到是两个人在打电话吧。 有了基本模型,再了解下它的层次划分。 ? 请注意它的高亮区域! 回顾下传输模型 层次划分 | 传输层 | TCP协议 >TCP连接 三次握手是怎样的呢? ? 为什么是三次?

    46730发布于 2019-07-18
  • 来自专栏木东居士的专栏

    漫谈并发编程:Actor模型

    0x00 前言 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。 本文主要是来分享Scala的Actor模型。 文章结构 本篇博客尝试讲解Actor模型。 但包括面向对象语言在内的软件通常是顺序执行的,而Actor模型本质上则是并发的。 (belong,5) (same,5) (to,6) (and,6) (fox,6) (dog,8) (the,8) 0x04 总结 本来是想搞Go的并发编程的,但是CSP和Actor模型有很多接近的地方 ,想搞CSP模型,总是要看Actor的,因此就先花了点时间看一下Actor模型

    3.9K51发布于 2018-05-25
  • 来自专栏子曰五溪

    技术 | JavaScript的“并发模型

    说到并发应该很多人会想到多线程或多进程,很遗憾JavaScript是单线程的,但是JavaScript也有一个很有趣的东西,可以让你产生在使用多线程的感受,事件循环(Event Loop)提供了一些很有意思的东西 抛开现今已知的setTimeout,setInterval,nextTick,setImmediate等,HTML5也提供了一个web worker来处理多个运行时,只不过它只有监听postMessage

    73620发布于 2019-06-24
  • 来自专栏方丈的寺院

    单机高并发模型设计

    背景 在微服务架构下,我们习惯使用多机器、分布式存储、缓存去支持一个高并发的请求模型,而忽略了单机高并发模型是如何工作的。 这篇文章通过解构客户端与服务端的建立连接和数据传输过程,阐述下如何进行单机高并发模型设计。 经典C10K问题 如何在一台物理机上同时服务10K用户,及10000个用户,对于java程序员来说,这不是什么难事,使用netty就能构建出支持并发超过10000的服务端程序。 应用程序进行decode,业务逻辑处理,最后encode,再发送出去,返回给客户端 因为是一个线程处理一个连接数据,对应的线程模型是这样 多路复用 阻塞vs非阻塞 因为一个连接传输,一个线程,需要的线程数太多 以上就是大名鼎鼎的reactor高并发模型

    85220编辑于 2022-11-08
  • 来自专栏一起学Golang

    Golang并发模型:select进阶

    前一篇文章《Golang并发模型:轻松入门select》介绍了select的作用和它的基本用法,这次介绍它的3个进阶特性。 exit") } 运行结果: ➜ go run x.go for: 0 read: 0 for: 1 read: 1 for: 2 read: 2 for: 3 gen exit for: 4 for: 5 当你开发一个并发程序的时候,main函数千万不能在子协程干完活前退出啊,不然所有的协程都被迫退出了,还怎么提供服务呢?

    74330发布于 2019-04-11
  • 来自专栏gojam技术备忘录

    并发模型与事件循环

    #constructor 构造函数 #原型链&继承 #Promise #函数生成器 #async...await #并发模型与事件循环 JavaScript的并发模型基于事件循环。 先同步,后异步。 延时可能大于设定的时间,因为预定的时间内JavaScript可能正在处理其他消息(即使延时设置为0也一样,并且H5标准规定最小间隔为4ms)。

    1K20发布于 2019-09-09
  • 来自专栏Golang开发

    Go语言核心编程(5)——并发

    注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 并发和并行是两个不同的概念: • 并行意味着程序在任意时刻都是同时运行的。 • 并发意味着程序在单位时间内是同时运行的。 goroutine是Go语言里面的并发执行体,通道是 goroutine之间通信和同步的重要组件。

    87930发布于 2019-05-29
  • 来自专栏狗哥的 Java 世界

    Java 并发5)ReentrantLock 源码分析

    5. 如果想编写一个带有多个条件谓词的并发对象,或者想获得除了条件队列可见性之外的更多控制权,就需要使用显式的 Lock 和 Condition 而不是内置锁和条件队列。 有关于 ConditionObject 的具体实现大家可以查阅我的这篇文章《Java 并发(4)AbstractQueuedSynchronizer 源码分析之条件队列》,这里就不重复赘述了。

    59930发布于 2020-04-07
领券