Green Thread不比Native Thread差

http://zhangyu8374.iteye.com/blog/86299

 

Green Thread 不比Native Thread 差

在Ruby实现中,Ruby1.8采用的是 Green thread ,JRuby和XRuby采用的是Native thread ,Rubinius既支持 Green thread ,也支持Native thread 。Ruby1.9将由 Green thread 转向Native thread 。 Green thread 有哪些不足呢?

在“ Ruby Userspace Thread s vs GUI tookits Roundup ”中重点强调了 Green Thread 的一个不足:Blocking syscall将阻塞所有其余的线程,而且这个问题在GUI和网络开发中将随处碰到。另外, Green Thread 不能有效挖掘多核和多CPU的性能。于是大家都把视线转向Native thread 。我对Native thread 不感冒,主要是因为shared state concurrency问题多多。具体有哪些,相信你看完“ The problem with thread s ”就会很清楚了。

现在,Erlang很好的解决了 Green Thread 存在的问题。它没有采用m:1模式,而是采用了m:n模式。Erlang runtime以n个native thread 运行,每个都有一个自己的调度器。而且,Erlang采用shared nothing concurrency,可以把Native Thread 存在的问题都抛之脑后。

看来XRuby的 thread 实现可以好好借鉴一下Erlang的并发范式。在看了“ The Futures of Ruby Thread ing ”之后,更坚定了应该朝这方面努力。
Android Bitmap内存优化:从原理到实战的完整解决方案 在移动应用开发中,内存优化是提升应用性能和稳定性的关键技术领域。其核心原理在于理解应用运行时内存的分配、使用与回收机制,特别是针对图片、缓存等资源密集型对象的管理。有效的内存优化技术能显著降低应用崩溃率、提升界面流畅度,并改善多任务环境下的系统资源占用。这一技术在社交、电商、内容浏览等高图片负载的应用场景中价值尤为突出。本文聚焦于Android平台内存消耗的“大户”——Bitmap,深入剖析其Native堆内存模型与开销计算,并详细介绍了通过编译期插桩(AOP)进行无侵入监控,以及利用inSampleSiz 阅读详情

相关推荐

Unity集成JavaCV:实现高性能计算机视觉的终极架构与实战

计算机视觉(CV)作为人工智能的核心分支,旨在让机器“看懂”世界,其核心原理是通过算法处理和分析图像或视频数据,提取有价值的信息。这项技术在游戏开发、增强现实(AR)和人机交互等领域具有极高的技术价值,能够实现手势识别、面部检测、环境理解等智能交互。在Unity游戏引擎中集成CV能力,传统方案常面临性能瓶颈和功能限制。本文聚焦于通过JavaCV这一关键技术,为Unity提供一套高性能、跨平台的终极集成方案。该方案深入剖析了内嵌JVM架构、零拷贝数据传递等核心原理,解决了图像数据在C#与Java间高效流转、跨

weixin_33690367的博客 360

绿色线程

1.什么是绿色线程? 绿色线程(Green Thread)是一个相对于操作系统线程(Native Thread)的概念。 操作系统线程(Native Thread)的意思就是,程序里面的线程会真正映射到操作系统的线程,线程的运行和调度都是由操作系统控制的 绿色线程(Gree

perfe_ct的专栏 6515

汽车电缆选型实战:基于ISO 19642-3~12的7类电缆电压/材料/场景对照表

本文详细解析了基于ISO 19642-3~12标准的7类汽车电缆选型实战,涵盖电压等级、导体材料和场景应用的对照表。通过全参数速查表和典型选型陷阱分析,帮助工程师快速掌握从低压信号线到高压动力电缆的选型逻辑,提升新能源汽车与智能驾驶技术的安全性和可靠性。

weixin_29043895的博客 365

Thread(线程)、Fiber(纤程)、coroutine(协程) 、绿色线程(GreenThread)

计算机有进程,线程和协程。前两者大家都知道,很常见的玩意。而协程,则是基于线程之上的,自主开辟的异步任务,很多人更喜欢叫它们纤程(Fiber),或者绿色线程(GreenThread)。 进程 为了使多个程序能够并发(同一时刻只有一个在运行,但感觉起来像多个同时运行;并行(同一时刻真的多个在运行,不是感觉像多个))的执行,操作系统需要一个结构来抽象和表示这个程序的运行。 进程是操作系统对一个正在运行的程序的一种抽象结构。 进程是指在操作系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数

新技术革命 4214

ArcGIS Pro MCP 开源:自然语言驱动的 AI 制图与分析

人工智能与大模型的快速发展,正推动专业软件从“手动操作”走向“自然语言控制”。模型上下文协议(MCP)作为连接 AI 与外部工具的标准接口,类似为 AI 安装的“USB 接口”,让大模型可以通过统一协议调用 GIS 软件能力。基于 ArcPy 构建的 ArcGIS Pro MCP 项目,将复杂的地图制图与空间分析封装为 112 个可被 AI 调用的工具,使文本指令直接驱动软件完成数据加载、符号化、出图乃至叠加统计等任务。对 GIS 工程师、数据分析师与测绘规划从业者而言,该开源项目显著降低专业软件使用门槛,

weixin_29054195的博客 274

伺服驱动器485通信

485通信使用方法,485通信在上位机和伺服驱动器之间的应用,根据需要驱动电机旋转。

haipi511715316的博客 1万+

java green thread,Green Thread

What is Green Thread.The Wikipedia article Green Threads explains it very well.In a nutshell,Green threads are "user-level threads". They are scheduled by an "ordinary" user-level process, not by the ...

weixin_29111953的博客 297

100个Python代码大全:学完这篇从Python小白到架构师

Python是一种广泛使用的高级编程语言,以其简洁优雅、易于学习和强大的库而闻名。无论你是一位经验丰富的程序员还是初学者,都可以从这种语言的丰富资源中受益。在本篇博客中,我将分享100个实用的Python代码示例,旨在帮助你掌握Python编程,并在日常工作中提高效率。

penggerhe的博客 1万+

Go的机理- Green Thread模型、work stealing调度算法、非阻塞式IO

Goroutine使用Green Thread模型(N:M 多个green threads运行在多个kernel threads ),既可以快速的进行context switch,又可以很好的利用多核,使用work stealing算法进行调度 模型:MPG三个角色,分别代表kernel threads,processor和goroutine。 调度:P负责完成对G和M的调度 1、P维护一个de...

cjxunooo的博客 781

AIGC游戏开发:如何评估生成内容的玩家满意度?

如何量化评估生成内容对玩家体验的影响?本文聚焦AIGC生成的游戏内容(包括但不限于剧情、关卡、NPC对话、道具),系统探讨玩家满意度的评估方法论,覆盖主观与客观评估、静态与动态内容、短期与长期体验等场景。核心概念:定义AIGC与玩家满意度的关联维度;评估方法:主观(问卷/访谈)与客观(行为/生理数据)评估的技术细节;数学模型:构建多指标融合的评估模型;实战案例:以AIGC生成关卡为例,演示从数据采集到模型落地的全流程;工具资源:推荐数据采集、分析与建模的工具链;

AI天才研究院 1224

《用 Python 爬取统计局年鉴:从 API 抓取到结构化分析,实战全流程详解》

在数据分析、经济研究、商业决策中,国家统计局发布的年鉴数据具有权威性和参考价值。本篇博客将带你从零实践:了解目标、设计爬虫、抓取年度数据、解析 JSON、保存结构化数据、并用 Pandas 简要分析可视化,且使用现代 Python 最佳实践(如httpx、pydantic、typer 等),提升代码质量与效率。如何抓取国家统计局年鉴数据;利用 API 方式高效获取;使用现代异步 Python 提升性能;将数据结构化输出;结合 CLI、类型校验和简单分析技术提升实用性。

2201_76125261的博客 1085

java并发线程池的使用_Java并发编程:线程池的使用

我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的...

weixin_32463071的博客 435

uniapp H5刷新页面后返回按钮失效问题完美解决方案

这个问题其实很隐蔽,尤其是uniapp H5 场景下刷新导致栈清理,很多开发者一开始都懵掉了。uniapp 内部对「页面栈只有一个」时的返回逻辑是reLaunch;所以只要在这个分支里替换为自己的逻辑(比如),就能顺利实现预期。目前我在项目里已经跑通了,暂时没发现问题。不得不说,知道源码里这个逻辑后,真的是醍醐灌顶,只能膜拜框架大佬了 🤯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 523

java thread cpu

问题:一个java进程的多个线程能否在cpu的多core里执行? 观点一: 进程是CPU进行调度的单位,而JVM是一个进程,于是一个jvm产生的java进程就只能跑在CPU的一个core上。 在我的印象里一直抱着这个想法,很多年。多年之前OS对于cpu执行进程是这么处理的,没有错。 观点二: 从操作系统来看,linux2.6以及windowsNT4.0之后都具备将多个线程放到cpu的

731

ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)

ROSTCM6是武汉大学沈阳教授研发编码的国内目前唯一的以辅助人文社会科学研究的大型免费社会计算平台。该软件可以实现微博分析、聊天分析、全网分析、网站分析、浏览分析、分词、词频统计、英文词频统计、流量分析、聚类分析等一系列文本分析。

m0_64336780的博客 4万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

为什么cinder-volume在删除volume时无反应 (by quqi99)

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (作者:张华 发表于:2018-08-30) 问题 cinder-volumes在删除volume时很慢, 并且此时create volume的其他操作也无反应, 也无日志. 理论 green thread的概念就是之间不共享数据, 每个green thread有自己的私有的数据对象, 并且非阻塞, 一...

技术并艺术着 1935

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

<span class=“js_title_inner“>每每聊到线程Thread</span>

而这些独立指令最终是被 CPU 执行。User Thread就是用户线程,是处于应用层面的一种数据结构体,比如我们使用 Java SDK 中的 Thread就是User Thread。之所以在之前的结果里多个线程的效率慢,是因为我们创建了 1000 个线程,个数已经完全超出了CPU核数,所以 CPU 不得不在多个线程中进行上下文切换,这个操作会严重影响程序运行效率。改用 Native Thread之后,这几番操作下来,在一定程度上提高了线程的运行效率,但是带来的后果就是线程的创建和销毁操作变得异常笨重。

zxm317122667的专栏 110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

What is the difference between "green" threads and "native" threads?

http://www.jguru.com/faq/view.jsp?EID=143462http://www.codestyle.org/java/faq-Threads.shtml#greenthreadhttp://www.ibm.com/developerworks/cn/java/j-concurrent/http://tailsherry.iteye.com/blog/176152ht...

weixin_30648587的博客 84

Green and native threads -- what's the difference?

Green and native threads -- what's the difference?

SimplyJava的专栏 1256

Folia 安装教程:三种方式快速装好全屏歌词动画播放器

Folia 是一个把歌词渲染成全屏动画的音乐播放器,支持网易云、酷狗、Navidrome 等在线音源,也能接入本地音乐库。本文围绕 Folia 安装展开,带你从选渠道、取包一路走到第一次启动成功,覆盖 Windows、macOS 与 Linux 三大系统,每一步都给出验证点,走一步确认一步。不需要任何编程基础,顺利的话几分钟内就能完成。 ## 安装路线速选 先按你的系统对号选路,再往下走对应章

gitblog_00927的博客 447

基于HarmonyOS API 24,React Native鸿蒙如何在 RN 层暴露 showReceiptDetail(msgId)、markRead(msgId, scope) 等 API

OK常规的 TestCase 类和 doctests 也会被执行。最后,nose 提供了类似于 TestCase 方法的断言函数(assertion functions)。这些函数遵循 PEP 8 命名约定,而不是使用 Java 单元测试中的约定(参考 http://nose.readthedocs.org/)。编写测试固件nose 支持 3 个级别的测试固件。● 包级别:可以把 setup 和 teardown 函数添加到__init__.py 模块中,这是一。

2301_77888392的博客 883

Android Bitmap内存优化实战:从原理到监控与治理

在移动应用开发中,内存管理是保障应用流畅与稳定的核心技术之一。其核心原理在于理解系统如何为不同类型的数据结构分配和回收内存,尤其是在处理图形资源时。有效的内存优化技术能显著提升应用性能,减少卡顿与崩溃,对于用户体验至关重要。在Android平台上,Bitmap作为承载图像数据的主要对象,其内存占用机制尤为关键。通过字节码插桩等技术手段,开发者可以实现对Bitmap创建与销毁过程的白盒化监控,精准定位内存异常与泄漏问题。本文聚焦于Bitmap内存的量化分析、ASM插桩监控实践以及主动优化策略,为构建高性能移动

weixin_33811539的博客 460

Java threads question set

Java threads question set Do I need to use synchronized on setValue(int)? - It depends whether the method affects method local variables, class static or instance variables. If only method local...

weixin_30821731的博客 88

CANN/cannbot-skills:CUDA到Ascend C SIMT迁移工具

name: cuda2ascend-simt description: "将 CUDA 算子/Kernel 迁移到 Ascend C SIMT。触发:CUDA 转 Ascend、CUDA 迁移昇腾、cuda kernel porting to Ascend、CUDA to Ascend SIMT、CUDA 代码移植 NPU、GPU 算子转 NPU、.cu 转 .asc、CUDA 转 NPU。Use

gitblog_00009的博客 487
上一篇: 探究 Z-Order
下一篇: Swing table
topinking
博客等级 码龄20年 15粉丝 242原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值