阅读更多

13顶
0踩

编程语言

原创新闻 Rails 2.2要改成线程安全的了!

2008-08-18 11:23 by 见习编辑 robbin 评论(6) 有8225人浏览
Ruby on Rails官方博客发布的信息,Josh Peek加入了Rails的核心开发团队。Josh Peek正在开发的一个项目是让Rails框架变成线程安全的版本,该项目参加了今年的Google Summer Of Code大赛。

DHH宣布将在Rails 2.2版本当中合并Josh Peek的关于Rails线程安全的项目工作成果,这意味者Rails下一个版本,即2.2版本将支持多线程方式运行Rails。

我们知道,截止Rails 2.1版本,Rails仍然是以单进程内单线程方式运行,如果Rails改为单进程内多线程方式运行,会带来什么好处呢?

1、节省物理内存
由于多个线程在一个进程内可以共享内存空间地址,可以节省大量物理内存空间地址。

2、可以并发响应更多请求
一个进程内多个线程的调度可以由Mongrel等支持多线程的Ruby应用服务器管理,因此可以根据请求负载,创建更多线程响应请求,提高并发处理能力

但是以多线程方式运行Rails,并非革命性的进步,多线程也会带来很多问题:

1、ruby进程的GC过程会阻塞进程内所有线程的运行,GC比多进程方式带来更大的影响

2、多线程可以共享进程内资源,可能会导致程序员滥用多线程造成多个线程资源争用问题

3、多线程内任何一个线程的问题都可能影响整个进程的稳定运行。


但是多线程的Rails对于JRuby无疑是一个天大的好消息!由于JVM本身就是支持内核多线程的,因此多线程的Rails运行在JRuby上面是一个天然的绝配,不但可以大幅度减少JRuby的内存消耗,而且可以切实有效提供JRuby的并发处理性能。

总之,Rails 2.2支持多线程将为我们打开Rails的另外一扇门。
13
0
评论 共 6 条 请登录后发表评论
6 楼 无明 2008-08-19 09:50
有个疑问,CRuby的GC本来就不是很成熟,跟JVM比差了好多,以多线程的方式跑Rails,会不会导致性能颠簸的比较厉害?性能差一点对数据库应用来说问题并不算太大,但要是稳定性差了,那就不划算了
5 楼 inosin 2008-08-19 09:50
什么时候发布?
4 楼 hozaka 2008-08-18 18:24
终于等到这一天了!!
3 楼 fkpwolf 2008-08-18 14:02
最后变成跟java一样庞大臃肿
2 楼 fxsjy 2008-08-18 13:08
没必要,多进程不是好好的吗?
1 楼 QuakeWang 2008-08-18 11:39
国外的讨论,Rails的线程安全意味着什么:
http://blog.headius.com/2008/08/qa-what-thread-safe-rails-means.html

这对于rails来说是一个巨大的改动,期待2.2的发布。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • C++ Win32界面编程中的窗口风格要点总结(附源码)

    最近我们遇到了几个与窗口风格相关的问题,因为未设置指定的窗口风格或者错误设置了某些窗口风格导致了窗口出现了一些bug。本文借此机会将窗口风格的相关要点进行详细的总结,在此分享出来,给大家提供一些借鉴和参考。

  • c++11封装win32界面库

    c++11封装win32界面库

  • Win32汇编系列七、窗口程序原理及实现

    前言 学c语言的人天天面对黑框框,有木有?不知道是否想用c写一个窗口程序?我想应该也很希望吧,目前我见过的书中很少有介绍窗口程序设计,如果想写的话,还需要去网上、b站搜索,使用c写窗口程序其实挺麻烦的,需要了解Windows消息机制、GDI或者GDI+、还有各种控件,如Button,另外自带的控件都太难看,需要使用GDI或GDI+自己绘制,这样工作量又大了很多,所以现在很少有rj这种最"底层"的方式实现了就需要我不曾在c中大量写过, ...

  • 汇编实验:屏幕窗口程序(代码有较为详细的注释)

    实验3.4 屏幕窗口程序 1.题目:屏幕窗口程序 2.实验要求: 在屏幕上开出三个窗口,它们的行列坐标按照教材要求。光标首先定位在右窗口最下面一行的行首(15,50),如从键盘输入字符,则显示在右窗口,同时也显示在下窗口的最下面一行。若需要将字符显示于左窗口,则先按下键,接着再从键盘输入字符,字符就会从左窗口的最下行开始显示,同时下窗口也显示出左窗口的内容。如若再按下键,输入字符就会接在先前...

  • 汇编如何建立窗口程序

    用Windows32下面的汇编开发工具+window32的API函数来做window窗口程序之后,自然会提高我们的汇编语言功底和window低层的工作原理及一些API函数的特性windows做程序开发,如果是窗口程序我们只要关注于两个方面:1控制windows消息2制作windows界面(也就是资源文件中的一切对象)window 32汇编开发资源清单下载网站:开发工具选用masm32下载网站htt

  • WIN32 SDK界面编程

    WIN32 SDK界面编程   在介绍win32 sdk界面编程,先需要了解win32 编程。熟悉win32编程之后,就可以轻松进行win32 界面编程。 一、什么是win32 编程 Win32编程,指的是用Window提供的API(Application Programming Interface)为Window编写应用程序。 之所以称之为Win32,是因为现在的Window都是32位的

  • win32 最基本编程和应用程序框架

    现在市场上出现了很多应用程序框架,比如窗体程序,如MFC,.net framwork , VB , delphi,举不胜数。其实,这些并不是开发windows应用程序必需的东西,windows在底层是为我们开放了一套API函数库,使用这套函数库,其实我们也能构建出一套功能强健的windows应用程序。下面,我重点说明一下windows的窗口应用程序,其实,windows窗口程序的核心就是窗

  • VC++ WIN32编程-基本窗口

    #include <windows.h> LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow){    TCHAR szAppName[...

  • 跟我一起玩Win32开发(2):完整的开发流程

    上一篇中我给各位说了一般人认为C++中较为难的东西——指针。其实对于C++,难点当然不局限在指针这玩意儿上,还有一些有趣的概念,如模板类、虚基类、纯虚函数等,这些都是概念性的东西,几乎每一本C++书上都会介绍,而平时我们除了会接触到纯虚函数外,其他的不多用。纯虚函数,你可以认为与C#中的抽象方法或接口中的方法类似,即只定义,不实现。好处就是多态,发何处理,由派生类来决定。 在开始吹牛之前,我先推

  • Win32 API 窗口编程模板

    #include //窗口函数声明 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM );    //入口函数 WinMain() int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,                      

  • win32开发(创建子窗口)

    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】    在win32中,有的时候需要创建额外的子窗口。所谓子窗口的概念,就是窗口本身不会超出母窗口的边界,所有的操作都是在母窗口里面完成的。子窗口可以用os提供的默认类型来完成,也可以自定义类型来完成。常用的子窗口有BUTTON、COMBOBOX、EDIT、LISTBOX、STATIC、SCROL

  • 用32位汇编语言写一个窗口程序

    用WIN32来写窗口程序需要编写两个文件,一个是资源脚本文件:*.rc,一个是汇编源文件:*.asm。将这两个文件编译链接在一起就可以得到我们的窗口程序。而资源脚本文件中包含了对菜单,加速键,图标,光标,位图等资源的定义,源文件中包含如何使用这些资源的代码。 首先我们来看资源脚本文件中菜单和加速键以及图标光标的定义。 #include <resource.h> #define...

  • 使用WIN32汇编语言实现一个基本windows窗口的过程分析

    一个常规的windows窗口一般都是一些一样的构造,你如果想要更改一些个性化的设置,你可以在这个一般的模板伤添砖加瓦,构造自己比较喜欢的类型,下边就分析一下一般的windows窗口的一般模板。 一. 首先看一下一般的windows窗口都包含什么框架(NO picture you say a J8.....上图上图)如下(罗云斌win32汇编书中92页的一张图): 该图简单的

  • 亲测正确版-win32汇编贪吃蛇源码-win22汇编游戏源码

    win32汇编实现贪吃蛇 win32汇编多文件程序设计 亲测正确版-win32汇编贪吃蛇源码-win22汇编游戏源码 网络流传的很多没法使用,亲测让大家放心使用 汇编语言实现动态链表 以对话框做窗口模板并做为主界面 开发工具 ollydbg + MASM32 + gVim + NMAKE + ResEd

  • 一个汇编写的窗口,供大家借鉴

    用汇编写的一个windows窗口,供大家借鉴学习!!

  • Windows环境下32位汇编语言程序设计_随书光盘

    ××××××××××××××××××××××××××× × 《Windows环境下32位汇编语言程序设计》 × × 附书代码说明 × ××××××××××××××××××××××××××× 1. 编译器和链接器 本附书代码全部采用 MASM 格式编写,推荐使用 MASM32 软 件包作为编译环境,MASM32 软件包可以在以下地址下载: MASM32官方站点: http://www.masm32.com 安装及开发的操作系统建议采用32位的Windows 7,在64位操作系统 上安装 MASM32 软件包,安装生成的Lib文件可能不兼容。 安装完成以后请将本光盘根目录下的环境设置批处理文件Var.bat 拷贝到 Masm32\bin 目录下,并根据 MASM32 的安装位置编辑修改 Var.bat 文件中的相关目录名称。 2. 代码维护工具 每个例子都包括了描述编译、链接方法的 makefile 文件, 使用 nmake 工具可以自动根据此文件进行编译链接,nmake 工 具可以从 Visual C++ 的 bin 目录中找到,也可以从作者的网 站中下载。 3. 编译环境和编译方法 建议使用命令行方式进行编译,以编译 Chapter02\Test 目录中 Test.asm 为例,步骤是: I. 打开一个“命令提示符”窗口。 II. 进入环境设置批处理文件 Var.bat 所在目录并执行 它,以后就可以使用这个“命令提示符”窗口编译 文件了。 x: cd \masm32\bin var III. 进入源代码目录: cd \chapter02\test IV. 使用 nmake 工具进行编译链接: nmake V. 执行编译好的可执行文件。 如果需要对源代码进行修改,不必关闭“命令提示符”窗口, 只要切换到编辑器窗口,在修改 *.asm 文件后重复进行第 IV 和 第 V 步骤即可。 # 特别注意:将光盘中的代码拷贝到硬盘后,必须将文件的只读属性去除! 4. 本光盘所包含目录的说明 根目录下的 *.pdf ;附录A、B、C的电子版文档 Chapter02\Test ;测试编译环境 Chapter03\HelloWorld ;Hello World Chapter04\FirstWindow ;用Win32汇编写第一个窗口 Chapter04\FirstWindow-1 ;用Win32汇编写第一个窗口 Chapter04\SendMessage ;窗口间的消息互发 Chapter04\SendMessage-1 ;窗口间的消息互发 Chapter05\Menu ;使用资源 - 使用菜单 Chapter05\Icon ;使用资源 - 使用图标 Chapter05\Dialog ;使用资源 - 使用对话框 Chapter05\Listbox ;使用资源 - 使用列表框 Chapter05\Control ;使用资源 - 使用子窗口控件 Chapter05\ShowVersionInfo ;使用资源 - 显示版本信息资源的程序 Chapter05\VersionInfo ;使用资源 - 使用版本信息资源 Chapter06\Timer ;定时器的使用 Chapter07\DcCopy ;在两个窗口的 DC 间互相拷贝屏幕 Chapter07\Clock ;模拟时钟程序 Chapter07\BmpClock ;用 Bitmap 图片做背景的模拟时钟程序 Chapter07\TestObject ;一些常见的绘图操作 Chapter08\CommDlg ;使用通用对话框 Chapter09\Toolbar ;使用工具栏 Chapter09\StatusBar ;使用状态栏 Chapter09\Richedit ;使用丰富编辑控件 Chapter09\Wordpad ;一个完整的文本编辑器例子 Chapter09\SubClass ;窗口的子类化例子 Chapter09\SuperClass ;窗口的超类化例子 Chapter10\MemInfo ;显示当前内存的使用情况 Chapter10\FindFile ;全盘查找文件的例子 Chapter10\FormatText ;文件读写例子 Chapter10\FormatText\FileMap ;使用内存映射文件进行文件读写的例子 Chapter10\MMFShare ;使用内存映射文件进行进程间数据共享 Chapter11\Dll\Dll ;最简单的动态链接库例子 - 编写 DLL Chapter11\Dll\MASM Sample ;最简单的动态链接库例子 - 使用 DLL Chapter11\Dll\VC++ Sample ;最简单的动态链接库例子 - 在VC++中使用汇编编写的DLL Chapter11\KeyHook ;Windows 钩子的例子 - 监听键盘动作 Chapter11\RecHook ;Windows 日志记录钩子的例子 - 监听键盘动作 Chapter12\Counter ;有问题的程序 - 一个计数程序 Chapter12\Thread ;用多线程的方式解决上一个程序的问题 Chapter12\Event ;使用事件对象 Chapter12\ThreadSynErr ;一个存在同步问题的多线程程序 Chapter12\ThreadSyn\UseCriticalSection ;使用临界区对象解决多线程同步问题 Chapter12\ThreadSyn\UseEvent ;使用事件对象解决多线程同步问题 Chapter12\ThreadSyn\UseMutex ;使用互斥对象解决多线程同步问题 Chapter12\ThreadSyn\UseSemaphore ;使用信号灯对象解决多线程同步问题 Chapter13\CmdLine ;使用命令行参数 Chapter13\Process ;创建进程的例子 Chapter13\ProcessList ;显示系统中运行的进程列表 Chapter13\Patch1 ;一个内存补丁程序 Chapter13\Patch2 ;一个内存补丁程序 Chapter13\Patch3 ;一个内存补丁程序 Chapter13\HideProcess9x ;Windows 9x下的进程隐藏 Chapter13\RemoteThreadDll ;用 DLL 注入的方法实现远程进程 Chapter13\RemoteThread ;不依靠任何外部文件实现远程进程 Chapter14\TopHandler ;使用筛选器处理异常 Chapter14\SEH01 ;最基本结构化异常处理例子 Chapter14\SEH02 ;改进后的结构化异常处理例子 Chapter14\Unwind ;异常处理中的展开操作例子 Chapter15\Ini ;使用 INI 文件 Chapter15\Reg ;操作注册表的例子 Chapter15\Associate ;操作注册表实现文件关联 Chapter16\TcpEcho ;实现 TCP 服务器端的简单例子 Chapter16\Chat-TCP ;用 TCP 协议实现的聊天室例子 Chapter17\PeInfo ;查看 PE 文件的基本信息 Chapter17\Import ;查看 PE 文件的导入表 Chapter17\Export ;查看 PE 文件的导出表 Chapter17\Resource ;查看 PE 文件的资源列表 Chapter17\Reloc ;查看 PE 文件的重定位信息 Chapter17\NoImport ;不使用导入表调用 API 函数 Chapter17\AddCode ;在 PE 文件上附加可执行代码的例子 Chapter18\OdbcSample ;用ODBC操作数据库的例子 Appendix A\EchoLine ;控制台输入输出的例子 Appendix B\MsgWindow01 ;消息机制试验 1 Appendix B\MsgWindow02 ;消息机制试验 2 Appendix B\MsgWindow03 ;消息机制试验 3 Appendix B\MsgWindow04 ;消息机制试验 4 Appendix C\BrowseFolder ;浏览目录对话框 6. 联系作者 虽然本书中所有的例子代码都已经在32位的Windows 98、Windows 2000、 Windows XP、Windows Vista和Windows 7下测试通过,但也有存在Bug的可能,如果 发现代码存在错误或者有其它问题,请告知作者,联系方法: E-mail:luoyunbin@hotmail.com 感谢您的支持! 作者:罗云彬

  • Win32汇编语言编程-弹出消息框

    回忆了一下汇编语言的项目,通过写一个 Windows 程序,程序运行时将弹出一个消息框并显示"Assembly is great!"来回忆Windows API的使用方法。 一、Windows API是什么?如何使用? Windows 为编写应用程序提供了大量的资源。其中最重要的是Windows API (Application Programming Interface)。 Windows AP...

  • 汇编实现简单的消息框

    <br />编写一个简单的Windows消息框,包括标题与正文的显示。<br />.386 .model flat,stdcall option casemap:none includelib user32.lib MessageBoxA PROTO :dword,:dword,:dword,:dword MsgBox equ <MessageBoxA> NULL equ 0 MB_OK equ 0 .stack 4096 .data SzTitle byte '第一个GU

  • 一个简单的汇编窗口

    .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include gdi32.inc includelib gdi32.lib include kernel32.inc includelib kernel32.lib

Global site tag (gtag.js) - Google Analytics