雷林鹏分享:Ruby 多线程】的更多相关文章

Ruby 循环 Ruby 中的循环用于执行相同的代码块若干次.本章节将详细介绍 Ruby 支持的所有循环语句. Ruby while 语句 语法 while conditional [do] code end 当 conditional 为真时,执行 code.while 循环的 conditional 通过保留字 do.一个换行符.反斜线 \ 或一个分号 ; ,来与 code 分离开. 实例 #!/usr/bin/ruby $i = 0 $num = 5 while $i < $num do…
Ruby 多线程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 线程是程序中一个单一的顺序控制流程,在单个程序中同时运行多个线程完成不同的工作,称为多线程. Ruby 中我们可以通过 Thread 类来创建多线程,Ruby的线程是一个轻量级的,可以以高效的方式来实现并行的代码. 创建 Ruby 线程 要启动一个新的线程,只需要调用 Thread.new 即可: # 线程 #1 代码部分 Thread.new { # 线程 #2 执行代码 } # 线程 #1 执行代码 实例 以…
Ruby Socket 编程 Ruby提供了两个级别访问网络的服务,在底层你可以访问操作系统,它可以让你实现客户端和服务器为面向连接和无连接协议的基本套接字支持. Ruby 统一支持应用程的网络协议,如FTP.HTTP等. 不管是高层的还是底层的.ruby提供了一些基本类,让你可以使用TCP,UDP,SOCKS等很多协议交互,而不必拘泥在网络层.这些类也提供了辅助类,让你可以轻松的对服务器进行读写. 接下来就让我们来学习如何进行 Ruby Socket 编程 什么是 Sockets 应用层通过传…
C# 多线程 线程 被定义为程序的执行路径.每个线程都定义了一个独特的控制流.如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作. 线程是轻量级进程.一个使用线程的常见实例是现代操作系统中并行编程的实现.使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率. 到目前为止我们编写的程序是一个单线程作为应用程序的运行实例的单一的过程运行的.但是,这样子应用程序同时只能执行一个任务.为了同时执行多个任务,它可以被划分为更小的线程. 线程生命…
Ruby 安装 - Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby 之后,解压到新创建的目录下: 双击 Ruby1.6.7.exe 文件,启动 Ruby 安装向导. 点击 Next,继续向导的 Important Information 页面,直到 Ruby 安装程序完成 Ruby 安装为止. 如果您的安装没有适当地配置环境变量,接下来您可能需要进行环境变量…
Ruby 安装 - Unix 下面列出了在 Unix 机器上安装 Ruby 的步骤. 注意:在安装之前,请确保您有 root 权限. 下载最新版的 Ruby 压缩文件.请点击这里下载. 下载 Ruby 之后,解压到新创建的目录下: $ tar -xvzf ruby-1.6.7.tgz $ cd ruby-1.6.7 现在,配置并编译源代码,如下所示: $ ./configure $ make 最后,安装 Ruby 解释器,如下所示: $ su -l root # 使用root用户 $ make…
Ruby 命令行选项 Ruby 一般是从命令行运行,方式如下: $ ruby [ options ] [.] [ programfile ] [ arguments ... ] 解释器可以通过下列选项被调用,来控制解释器的环境和行为. 选项描述 -a与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode).请查看 -n 和 -p 选项. -c只检查语法,不执行程序. -C dir在执行前改变目录(等价于 -X). -d启用调试模式(等价于 -debug). -F p…
Ruby 语法 让我们编写一个简单的 Ruby 程序.所有的 Ruby 文件扩展名都是 .rb.所以,把下面的源代码放在 test.rb 文件中. #!/usr/bin/ruby -w puts "Hello, Ruby!"; 在这里,假设您的 /usr/bin 目录下已经有可用的 Ruby 解释器.现在,尝试运行这个程序,如下所示: $ ruby test.rb 这将会产生下面的结果: Hello, Ruby! 您已经看到了一个简单的 Ruby 程序,现在让我们看看一些 Ruby 语…
Ruby 环境变量 Ruby 解释器使用下列环境变量来控制它的行为.ENV 对象包含了所有当前设置的环境变量列表. 变量描述 DLN_LIBRARY_PATH动态加载模块搜索的路径. HOME当没有参数传递给 Dir::chdir 时,要移动到的目录.也用于 File::expand_path 来扩展 "~". LOGDIR当没有参数传递给 Dir::chdir 且未设置环境变量 HOME 时,要移动到的目录. PATH执行子进程的搜索路径,以及在指定 -S 选项后,Ruby 程序的搜…
Ruby 类和对象 Ruby 是一种完美的面向对象编程语言.面向对象编程语言的特性包括: 数据封装 数据抽象 多态性 继承 这些特性将在 面向对象的 Ruby 中进行讨论. 一个面向对象的程序,涉及到的类和对象.类是个别对象创建的蓝图.在面向对象的术语中,您的自行车是自行车类的一个实例. 以车辆为例,它包括车轮(wheels).马力(horsepower).燃油或燃气罐容量(fuel or gas tank capacity).这些属性形成了车辆(Vehicle)类的数据成员.借助这些属性您能把…
Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash. 数值类型(Number) 1.整型(Integer) 整型分两种,如果在31位以内(四字节),那为Fixnum实例.如果超过,即为Bignum实例. 整数范围从 -230 到 230-1 或 -262 到 262-1.在这个范围内的整数是…
Ruby 变量 变量是持有可被任何程序使用的任何数据的存储位置. Ruby 支持五种类型的变量.您已经在前面的章节中大概了解了这些变量,本章节将为您详细讲解这五种类型的变量. Ruby 全局变量 全局变量以 $ 开头.未初始化的全局变量的值为 nil,在使用 -w 选项后,会产生警告. 给全局变量赋值会改变全局状态,所以不建议使用全局变量. 下面的实例显示了全局变量的用法. #!/usr/bin/ruby $global_variable = 10 class Class1 def print_…
Ruby 类案例 下面将创建一个名为 Customer 的 Ruby 类,您将声明两个方法: display_details:该方法用于显示客户的详细信息. total_no_of_customers:该方法用于显示在系统中创建的客户总数量. #!/usr/bin/ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr en…
Ruby 注释 注释是在运行时会被忽略的 Ruby 代码内的注释行.单行注释以 # 字符开始,直到该行结束,如下所示: #!/usr/bin/ruby -w # 这是一个单行注释. puts "Hello, Ruby!" 当执行时,上面的程序会产生以下结果: Hello, Ruby! Ruby 多行注释 您可以使用 =begin 和 =end 语法注释多行,如下所示: #!/usr/bin/ruby -w puts "Hello, Ruby!" =begin 这是一…
Ruby 运算符 Ruby 支持一套丰富的运算符.大多数运算符实际上是方法调用.例如,a + b 被解释为 a.+(b),其中指向变量 a 的 + 方法被调用,b 作为方法调用的参数. 对于每个运算符(+ - * / % ** & | ^ << >> && ||),都有一个相对应的缩写赋值运算符(+= -= 等等). Ruby 算术运算符 假设变量 a 的值为 10,变量 b 的值为 20,那么: 运算符描述实例 +加法 - 把运算符两边的操作数相加a +…
Ruby 判断 Ruby 提供了其他现代语言中很常见的条件结构.在这里,我们将解释所有的条件语句和 Ruby 中可用的修饰符. Ruby if...else 语句 语法 if conditional [then] code... [elsif conditional [then] code...]... [else code...] end if 表达式用于条件执行.值 false 和 nil 为假,其他值都为真.请注意,Ruby 使用 elsif,不是使用 else if 和 elif. 如果…
Ruby 块 您已经知道 Ruby 如何定义方法以及您如何调用方法.类似地,Ruby 有一个块的概念. 块由大量的代码组成. 您需要给块取个名称. 块中的代码总是包含在大括号 {} 内. 块总是从与其具有相同名称的函数调用.这意味着如果您的块名称为 test,那么您要使用函数 test 来调用这个块. 您可以使用 yield 语句来调用块. 语法 block_name{ statement1 statement2 .......... } 在这里,您将学到如何使用一个简单的 yield 语句来调…
Ruby 方法 Ruby 方法与其他编程语言中的函数类似.Ruby 方法用于捆绑一个或多个重复的语句到一个单元中. 方法名应以小写字母开头.如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常量,从而导致不正确地解析调用. 方法应在调用之前定义,否则 Ruby 会产生未定义的方法调用异常. 语法 def method_name [( [arg [= default]]...[, * arg [, &expr ]])] expr.. end 所以,您可以定义一个简单的方法,如下所示: de…
Ruby 字符串(String) Ruby 中的 String 对象存储并操作一个或多个字节的任意序列,通常表示那些代表人类语言的字符. 最简单的字符串是括在单引号(单引号字符)内.在引号标记内的文本是字符串的值: 'This is a simple Ruby string literal' 如果您需要在单引号字符串内使用单引号字符,那么需要在单引号字符串使用反斜杠,这样 Ruby 解释器就不会认为这个单引号字符会终止字符串: 'Won\'t you read O\'Reilly\'s book…
Ruby 模块(Module) 模块(Module)是一种把方法.类和常量组合在一起的方式.模块(Module)为您提供了两大好处. 模块提供了一个命名空间和避免名字冲突. 模块实现了 mixin 装置. 模块(Module)定义了一个命名空间,相当于一个沙箱,在里边您的方法和常量不会与其他地方的方法常量冲突. 语法 module Identifier statement1 statement2 ........... end 模块常量命名与类常量命名类似,以大写字母开头.方法定义看起来也相似:…
Ruby 哈希(Hash) 哈希(Hash)是类似 "employee" => "salary" 这样的键值对的集合.哈希的索引是通过任何对象类型的任意键来完成的,而不是一个整数索引,其他与数组相似. 通过键或值遍历哈希的顺序看起来是随意的,且通常不是按照插入顺序.如果您尝试通过一个不存在的键访问哈希,则方法会返回 nil. 创建哈希 与数组一样,有各种不同的方式来创建哈希.您可以通过 new 类方法创建一个空的哈希: months = Hash.new 您也…
Ruby 数组(Array) Ruby 数组是任何对象的有序的.整数索引的集合.数组中的每个元素都与一个索引相关,并可通过索引进行获取. 数组的索引从 0 开始,这与 C 或 Java 中一样.一个负数的索引时相对于数组的末尾计数的,也就是说,索引为 -1 表示数组的最后一个元素,-2 表示数组中的倒数第二个元素,依此类推. Ruby 数组可存储诸如 String. Integer. Fixnum. Hash. Symbol 等对象,甚至可以是其他 Array 对象.Ruby 数组不像其他语言中…
Ruby 范围(Range) 范围(Range)无处不在:January 到 December. 0 到 9.等等.Ruby 支持范围,并允许我们以不同的方式使用范围: 作为序列的范围 作为条件的范围 作为间隔的范围 作为序列的范围 范围的第一个也是最常见的用途是表达序列.序列有一个起点.一个终点和一个在序列产生连续值的方式. Ruby 使用 ''..'' 和 ''...'' 范围运算符创建这些序列.两点形式创建一个包含指定的最高值的范围,三点形式创建一个不包含指定的最高值的范围. (1..5)…
Ruby 日期 & 时间(Date & Time) Time 类在 Ruby 中用于表示日期和时间.它是基于操作系统提供的系统日期和时间之上.该类可能无法表示 1970 年之前或者 2038 年之后的日期. 本教程将让您熟悉日期和时间的所有重要的概念. 创建当前的日期和时间 下面是获取当前的日期和时间的简单实例: #!/usr/bin/ruby -w time1 = Time.new puts "Current Time : " + time1.inspect # Ti…
Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. write. gets. puts. readline. getc 和 printf. 本章节将讲解所有 Ruby 中可用的基础的 I/O 函数.如需了解更多的函数,请查看 Ruby 的 IO 类. puts 语句 在前面的章节中,您赋值给变量,然后使用 puts 语句打印输出. puts 语句指示程序…
Ruby 迭代器 迭代器是集合支持的方法.存储一组数据成员的对象称为集合.在 Ruby 中,数组和散列可以称之为集合. 迭代器返回集合的所有元素,一个接着一个.在这里我们将讨论两种迭代器,each 和 collect. Ruby each 迭代器 each 迭代器返回数组或哈希的所有元素. 语法 collection.each do |variable| code end 为集合中的每个元素执行 code.在这里,集合可以是数组或哈希. 实例 #!/usr/bin/ruby ary = [1,2…
Ruby Dir 类和方法 Dir 是一个表示用于给出操作系统中目录中的文件名的目录流.Dir 类也拥有与目录相关的操作,比如通配符文件名匹配.改变工作目录等. 类方法 序号方法 & 描述 1Dir[pat] Dir::glob( pat) 返回一个数组,包含与指定的通配符模式 pat 匹配的文件名: * - 匹配包含 null 字符串的任意字符串 ** - 递归地匹配任意字符串 ? - 匹配任意单个字符 [...] - 匹配封闭字符中的任意一个 {a,b...} - 匹配字符串中的任意一个 D…
Ruby File 类和方法 File 表示一个连接到普通文件的 stdio 对象.open 为普通文件返回该类的一个实例. 类方法 序号方法 & 描述 1File::atime( path) 返回 path 的最后访问时间. 2File::basename( path[, suffix]) 返回 path 末尾的文件名.如果指定了 suffix,则它会从文件名末尾被删除. 例如:File.basename("/home/users/bin/ruby.exe") #=>…
Ruby 面向对象 Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现.Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串.数字,甚至连 true 和 false 都是对象.类本身也是一个对象,是 Class 类的一个实例.本章将向您讲解所有与 Ruby 面向对象相关的主要功能. 类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包.类中的数据和方法被称为类的成员. Ruby 类定义 当您定义一个类时,您实际是定义了一个数据类型的蓝图.这实际上并没…
Ruby 异常 异常和执行总是被联系在一起.如果您打开一个不存在的文件,且没有恰当地处理这种情况,那么您的程序则被认为是低质量的. 如果异常发生,则程序停止.异常用于处理各种类型的错误,这些错误可能在程序执行期间发生,所以要采取适当的行动,而不至于让程序完全停止. Ruby 提供了一个完美的处理异常的机制.我们可以在 begin/end 块中附上可能抛出异常的代码,并使用 rescue 子句告诉 Ruby 完美要处理的异常类型. 语法 begin # - rescue OneTypeOfExce…