红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

文章:运用 Ruby 纤程进行异步 I/O

  • 2008-10-10
  • 本文字数:630 字

    阅读完需:约 2 分钟

纤程(Fibers)慢慢地进入了Ruby 开发者们的视线中,将作为新的并发原语而广为使用。通过对纤程和非阻塞(或者说异步)I/O 这两种方法的组合,可以解决用户空间线程问 题或者Ruby 1.9 的巨型解释器锁(Giant Interpreter Lock,简称GIL)的问题,这个问题使得Ruby 语言线程每次只能有一个是激活的。

最大的问题要数和使用那些阻塞的系统调用了,尤其是I/O 方面的。阻塞的系统调用,就拿读取来说,直到数据准备好的时候才会返回。在用户态的线程系统中,这 意味着这个进程中的所有线程也都会阻塞。解决方法是将I/O 系统与阻塞I/O 的方式进行解耦。有一种方法是在引发一个阻塞的系统调用以前捕捉它,以一种非 阻塞的方式来处理这个I/O 请求,然后挂起这个纤程,给另外的纤程运行的机会。一旦系统收到这个I/O 请求的回应的话,纤程会再度被调度。

纤程提供了一个好用的并发工具来实现这个概念,而不会让使用者去忍受些什么不愉快。目前,两个程序库都着重于使用纤程实现解决方案。比较新的解决方案是NeverBlock 程序库(Github 代码库包括 NeverBlock NeverBlock PG 支持ActiveRecord 的NeverBlock PG 适配器,以及支持异步操作的MySQLPlus MySQL 适配器)。更加通用的解决方案是建立在诸如Actor 和进程通信等Erlang 的思想之上的,来自Tone Arcieri 的Revactor 程序库。我们对来自NeverBlock 项目的 Mohammad A. Ali 来自 Revactor 项目的 Tone Arcieri 进行了访谈。

详情请参阅文章:运用 Ruby 纤程进行异步 I/O:NeverBlock 和 Revactor

2008-10-10 00:55925
用户头像

发布了 80 篇内容, 共 19.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

还不知道什么是生成式 AI?两门课带你从了解到使用

科技热闻

使用 Amazon CodeCatalyst 中的生成式 AI 助手 Amazon Q 提高开发人员的工作效率(预览版)

亚马逊云科技 (Amazon Web Services)

API re:Invent 生成式人工智能 Amazon Q Preview

海外云手机版-怎么从零开始进行TikTok营销?

Ogcloud

跨境电商 TikTok 外贸

喜报!酷克数据携手中移在线入选2023大数据“星河”数据库优秀案例

酷克数据HashData

“双十一、二” 业务高峰如何扛住?韵达快递选择 TDengine

TDengine

tdengine 时序数据库 韵达

宁波银行:在「金融科技」引擎上,沉浸式提效减负

LigaAI

研发管理 IDEA LigaAI 研发协作 提效

空投 | Mint Blockchain 将于 2024 年 1 月 10 号启动 Mint Genesis NFT 空投活动

NFT Research

blockchain NFT\ 空投

生成式AI:未来的发展方向是什么?

不在线第一只蜗牛

人工智能 生成式人工智能 技术 优化体系

百度王颖:百度文库重构为“一站式AI内容创作平台”,成为内容创作新起点

新消费日报

低代码可视化工具10分钟完成应用开发

互联网工科生

软件开发 低代码平台 可视化开发 JNPF

PVP2 ProVideoPlayer2 for Mac(PVP2多屏幕演示投放软件) v2.1.6永久激活版

mac

苹果mac Windows软件 ProVideoPlayer2 多功能演示工具

HttpClient5升级笔记--API篇

FunTester

技术人2023年终总结,大模型对小城市程序猿的深远影响|社区征文

百里丶落云

AI #大模型

inBuilder&openEuler,基于毕昇 JDK,提升大规模Java应用的启动性能

inBuilder低代码平台

低代码 openEuler Java.

探索Web前端技术的新趋势与发展

不在线第一只蜗牛

Web 前端技术 互联网+

5分钟攻略Spring-Retry框架实现经典重试场景

快乐非自愿限量之名

前端 spring-boot #框架

如何做代币分析:以 LINK 币为例

Footprint Analytics

区块链 加密货币 代币 LINK

探索前端构建可视化应用的思路

这我可不懂

前端开发 低代码 JNPF

AI工程化与低代码:加速人工智能应用开发的新趋势

EquatorCoco

人工智能 AI 低代码 人工智能技术

称重驱动二次开发教程

EquatorCoco

技术 开发 系统 电子称重系统

低代码开发平台:数字化转型的助推器

高端章鱼哥

软件开发 低代码 数字化

质量免费吗?

BY林子

软件质量 质量内建 缺陷预防

分享5个程序员必备的终端工具

伤感汤姆布利柏

前端 终端 低代码 JNPF

汇聚数据库创新力量 打造千行万业数据基石,openGauss Summit 2023即将召开

彭飞

投资引路人:认知体系决定成败

少油少糖八分饱

投资 认知 能力圈 反人性 人性

云计算:现代技术的基本要素

这我可不懂

云计算

PostgreSQL 可观测性最佳实践

观测云

数据库 postgresql

村卫生室、诊所云HIS系统源码 支持医保功能

源码星辰

使用代码生成工具快速开发应用-结合后端Web API提供接口和前端页面快速生成,实现通用的业务编码规则管理

快乐非自愿限量之名

Vue 前端 Web 后端 代码生成

每日一题:LeetCode-662. 二叉树最大宽度

半亩房顶

面试 算法 LeetCode 二叉树 BFS

SiteSucker for mac(网站下载工具) v5.1.13完美激活版

mac

网站下载工具 苹果mac Windows软件 SiteSucker

文章:运用Ruby纤程进行异步I/O_Ruby_Werner Schuster_InfoQ精选文章