首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java职业技术分享

    并发模型比较

    参考: 初步探索Nginx高并发原理 ---- Node.js Node.js 也是单线程模型。 所以有一些新的编程模型来实现高并发,用消息传递来代替共享内存和锁。 参考: actor并发模型&基于共享内存线程模型 为什么Actor模型是高并发事务的终极解决方案? 如何深入浅出地解释并发模型中的 CSP 模型并发编程:Actors模型和CSP模型 ---- 总结 高并发的关键在于实现异步非阻塞,更加高效地利用 CPU。多线程可以达到非阻塞,但占用资源多,切换开销大。 至少对主流的并发编程有了个感性的理解,也算是对自己的一个交代。 ---- update:函数式编程 2018.01.01 最近了解到,函数式编程也是一个可以用来解决并发问题的模型

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

    java 并发模型

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

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

    并发模型比较

    参考: 初步探索Nginx高并发原理 ---- Node.js Node.js 也是单线程模型。 所以有一些新的编程模型来实现高并发,用消息传递来代替共享内存和锁。 参考: actor并发模型&基于共享内存线程模型 为什么Actor模型是高并发事务的终极解决方案? 如何深入浅出地解释并发模型中的 CSP 模型并发编程:Actors模型和CSP模型 ---- 总结 高并发的关键在于实现异步非阻塞,更加高效地利用 CPU。多线程可以达到非阻塞,但占用资源多,切换开销大。 至少对主流的并发编程有了个感性的理解,也算是对自己的一个交代。 ---- update:函数式编程 2018.01.01 最近了解到,函数式编程也是一个可以用来解决并发问题的模型

    2.3K00发布于 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
  • 学习 Go并发模型

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

    16100编辑于 2025-06-11
  • 来自专栏运维开发王义杰

    Go: 并发模型详解

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

    49110编辑于 2024-02-26
  • 来自专栏腾讯技术工程官方号的专栏

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

    文末抽奖送书,欢迎参与~ 导语 曾看过很多并发模型相关的文章,但是这些文章大部分只讲了并发模型的实现原理,并没有给出具体的示例代码,看完总觉得对并发模型这个知识点是一知半解,不得要领。 为了掌握高并发模型,我这里抛砖引玉,实现了20种常见的并发模型,并对每种并发模型进行了性能压测和分析。由于本人水平有限,文章中难免有一些不准确或者纰漏的地方,欢迎大家批评指正。 的并发模型是多进程抢锁,每个进程的流量负载会更均衡,但因为有锁,所以进程池1的并发模型性能比进程池2的并发模型低一些。 线程池的并发模型和进程池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
  • 来自专栏数据云团

    并发篇-python传输模型

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

    46530发布于 2019-07-18
  • 来自专栏互联网技术栈

    七周七并发模型

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

    74320发布于 2018-12-12
  • 来自专栏木东居士的专栏

    漫谈并发编程:Actor模型

    0x00 前言 一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。 使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争(data race)。处理各种锁的问题是让人十分头痛的一件事。 本文主要是来分享Scala的Actor模型。 文章结构 本篇博客尝试讲解Actor模型。 但包括面向对象语言在内的软件通常是顺序执行的,而Actor模型本质上则是并发的。 ,但是CSP和Actor模型有很多接近的地方,想搞CSP模型,总是要看Actor的,因此就先花了点时间看一下Actor模型

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

    技术 | JavaScript的“并发模型

    说到并发应该很多人会想到多线程或多进程,很遗憾JavaScript是单线程的,但是JavaScript也有一个很有趣的东西,可以让你产生在使用多线程的感受,事件循环(Event Loop)提供了一些很有意思的东西

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

    单机高并发模型设计

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

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

    Golang并发模型:select进阶

    前一篇文章《Golang并发模型:轻松入门select》介绍了select的作用和它的基本用法,这次介绍它的3个进阶特性。 当你开发一个并发程序的时候,main函数千万不能在子协程干完活前退出啊,不然所有的协程都被迫退出了,还怎么提供服务呢?

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

    并发模型与事件循环

    #constructor 构造函数 #原型链&继承 #Promise #函数生成器 #async...await #并发模型与事件循环 JavaScript的并发模型基于事件循环。 先同步,后异步。

    99320发布于 2019-09-09
  • 来自专栏厉害了程序员

    并发模型:线程与锁(1)

    Photo by Jefferson Santos on Unsplash 并发&并行 并发程序含有多个逻辑上的独立执行块,他们可以独立的并行执行,也可以串行执行。 常见的并发模型有: 线程与锁 函数式编程 actor模型和通信顺序是进行(Communicating Sequential Processes, CSP) 数据级并行 lambda 架构 分离标识与状态模型 文章结构来自《七周七并发模型》 互斥和内存模型 创建线程 from threading import Thread def hello_world(): print("Hello from new (现在调用外星方法不再需要加锁) 下一篇会介绍锁的其它操作,地址为:《并发模型:线程与锁(2)》 https://mp.weixin.qq.com/s/3AImdyFFVcfpLuUbG5kV0g 参考链接 gi=ce162d119247 [3] 并发模型:线程与锁(2) https://mp.weixin.qq.com/s/3AImdyFFVcfpLuUbG5kV0g

    59110发布于 2020-12-22
  • 来自专栏Golang语言社区

    Golang并发模型:轻松入门流水线模型

    ,它有多种并发模型,通过流水线模型系列文章,你会更好的使用Golang并发特性,提高你的程序性能。 Golang的并发核心思路 Golang并发核心思路是关注数据流动。 Golang的并发模型灵感其实都来自我们生活,对软件而言,高的生产效率就是高的性能。 非并发的方式是使用for遍历整个切片,然后计算平方,打印结果。 我们使用流水线模型实现这个简单的功能,从流水线的角度,可以分为3个阶段: 遍历切片,这是生产者。 计算平方值。 打印结果,这是消费者。 FAN模式可以让我们的流水线模型更好的利用Golang并发,提高软件性能。但FAN模式不一定是万能,不见得能提高程序的性能,甚至还不如普通的流水线。

    1.2K30发布于 2018-12-24
  • 来自专栏一起学Golang

    Golang并发模型:轻松入门流水线模型

    Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文章,你会更好的使用Golang并发特性,提高你的程序性能。 这篇文章主要介绍流水线模型的流水线概念,后面文章介绍流水线模型的FAN-IN和FAN-OUT,最后介绍下如何合理的关闭流水线的协程。 Golang的并发核心思路 Golang并发核心思路是关注数据流动。 car_pipeline.jpeg Golang的并发模型灵感其实都来自我们生活,对软件而言,高的生产效率就是高的性能。 非并发的方式是使用for遍历整个切片,然后计算平方,打印结果。 我们使用流水线模型实现这个简单的功能,从流水线的角度,可以分为3个阶段: 遍历切片,这是生产者。 计算平方值。 打印结果,这是消费者。

    75220发布于 2019-04-11
  • 来自专栏迁移内容

    Java并发篇_Java内存模型

    并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。那么它们产生的原因和在Java中解决的办法又是什么呢? 二、并发编程的三个概念存在的问题 1、 线程切换带来的原子性问题: Java中的一条语句,在翻译为机器码之后,可能对应的是多个指令。 在前面谈到了一些关于内存模型以及并发编程中可能会出现的一些问题。 下面我们来看一下Java内存模型,研究一下 Java内存模型 为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。 也就是说,在java内存模型中,也会存在缓存一致性问题和指令重排序的问题。

    36610编辑于 2022-12-01
  • 来自专栏一起学Golang

    Golang并发模型:轻松入门select

    select在Golang并发中扮演着重要的角色,如果你已经入门了select可以跳过这篇文章,关注下一篇文章“select进阶”。 之前的文章都提到过,Golang的并发模型都来自生活,select也不例外。举个例子:我们都知道一句话,“吃饭睡觉打豆豆”,这一句话里包含了3件事: 妈妈喊你吃饭,你去吃饭。 时间到了,要睡觉。 call you eating 3$ go run x.go 4Time to sleep 5$ go run x.go 6Time to sleep select很简单但功能很强大,它让golang的并发功能变的更强大

    64110发布于 2019-04-11
领券