[前][次][番号順一覧][スレッド一覧]

ruby-changes:62842

From: Ashwin <ko1@a...>
Date: Sun, 6 Sep 2020 04:58:52 +0900 (JST)
Subject: [ruby-changes:62842] 40c06e6fe1 (master): Fixed some typos in ractor.md (#3522)

https://git.ruby-lang.org/ruby.git/commit/?id=40c06e6fe1

From 40c06e6fe1fe75758e490173b900beb3da62c4a8 Mon Sep 17 00:00:00 2001
From: Ashwin Elangovan <ashelangovan97@g...>
Date: Sun, 6 Sep 2020 01:28:31 +0530
Subject: Fixed some typos in ractor.md (#3522)


diff --git a/doc/ractor.md b/doc/ractor.md
index 2a2fa72..565ceda 100644
--- a/doc/ractor.md
+++ b/doc/ractor.md
@@ -19,9 +19,9 @@ You can make multiple Ractors and they run in parallel. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L19
 
 Ractors don't share everything, unlike threads.
 
-* Most of objects are *Unshareable objects*, so you don't need to care about thread-safety problem which is caused by sharing.
+* Most objects are *Unshareable objects*, so you don't need to care about thread-safety problem which is caused by sharing.
 * Some objects are *Shareable objects*.
-  * Immutable objects: frozen object which doesn't refer unshareable-objects.
+  * Immutable objects: frozen objects which don't refer to unshareable-objects.
     * `i = 123`: `i` is an immutable object.
     * `s = "str".freeze`: `s` is an immutable object.
     * `a = [1, [2], 3].freeze`: `a` is not an immutable object because `a` refer unshareable-object `[2]` (which is not frozen).
@@ -32,11 +32,11 @@ Ractors don't share everything, unlike threads. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L32
 
 ### Two-types communication between Ractors
 
-Ractors communicate each other and synchronize the execution by message exchanging between Ractors. There are two message exchange protocol: push type (message passing) and pull type.
+Ractors communicate with each other and synchronize the execution by message exchanging between Ractors. There are two message exchange protocols: push type (message passing) and pull type.
 
 * Push type message passing: `Ractor#send(obj)` and `Ractor.receive()` pair.
   * Sender ractor passes the `obj` to receiver Ractor.
-  * Sender knows a destination Ractor (the receiver of `r.send(obj)`) and receiver does not know the sender (accept all message from any ractors).
+  * Sender knows a destination Ractor (the receiver of `r.send(obj)`) and the receiver does not know the sender (accept all message from any ractors).
   * Receiver has infinite queue and sender enqueues the message. Sender doesn't block to put message.
   * This type is based on actor model
 * Pull type communication: `Ractor.yield(obj)` and `Ractor#take()` pair.
@@ -50,7 +50,7 @@ To send unshareable objects as messages, objects are copied or moved. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L50
 
 * Copy: use deep-copy (like dRuby)
 * Move: move membership
-  * Sender can not access to the moved object after moving the object.
+  * Sender can not access the moved object after moving the object.
   * Guarantee that at least only 1 Ractor can access the object.
 
 ### Thread-safety
@@ -58,11 +58,11 @@ To send unshareable objects as messages, objects are copied or moved. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L58
 Ractor helps to write a thread-safe program, but we can make thread-unsafe programs with Ractors.
 
 * GOOD: Sharing limitation
-  * Most of objects are unshareable, so we can't make data-racy and race-conditional programs.
+  * Most objects are unshareable, so we can't make data-racy and race-conditional programs.
   * Shareable objects are protected by an interpreter or locking mechanism.
 * BAD: Class/Module can violate this assumption
-  * To make compatible with old behavior, classes and modules can introduce data-race and so on.
-  * Ruby programmer should take care if they modify class/module objects on multi Ractor programs.
+  * To make it compatible with old behavior, classes and modules can introduce data-race and so on.
+  * Ruby programmers should take care if they modify class/module objects on multi Ractor programs.
 * BAD: Ractor can't solve all thread-safety problems
   * There are several blocking operations (waiting send, waiting yield and waiting take) so you can make a program which has dead-lock and live-lock issues.
   * Some kind of shareable objects can introduce transactions (STM, for example). However, misusing transactions will generate inconsistent state.
@@ -121,7 +121,7 @@ end https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L121
 r.take == self.object_id #=> false
 ```
 
-Passed arguments to `Ractor.new()` becomes block parameters for the given block. However, an interpreter does not pass the parameter object references, but send as messages (see bellow for details).
+Passed arguments to `Ractor.new()` becomes block parameters for the given block. However, an interpreter does not pass the parameter object references, but send them as messages (see below for details).
 
 ```ruby
 r = Ractor.new 'ok' do |msg|
@@ -188,7 +188,7 @@ Users can control blocking on (1), but should not control on (2) (only manage as https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L188
 
 * (1-1) send/recv (push type)
   * `Ractor#send(obj)` (`Ractor#<<(obj)` is an aliases) send a message to the Ractor's incoming port. Incoming port is connected to the infinite size incoming queue so `Ractor#send` will never block.
-  * `Ractor.recv` dequeue a message from own incoming queue. If the incoming queue is empty, `Ractor.recv` calling will block.
+  * `Ractor.recv` dequeue a message from its own incoming queue. If the incoming queue is empty, `Ractor.recv` calling will block.
 * (1-2) yield/take (pull type)
   * `Ractor.yield(obj)` send an message to a Ractor which are calling `Ractor#take` via outgoing port . If no Ractors are waiting for it, the `Ractor.yield(obj)` will block. If multiple Ractors are waiting for `Ractor.yield(obj)`, only one Ractor can receive the message.
   * `Ractor#take` receives a message which is waiting by `Ractor.yield(obj)` method from the specified Ractor. If the Ractor does not call `Ractor.yield` yet, the `Ractor#take` call will block.
@@ -349,7 +349,7 @@ Multiple Ractors can send to one Ractor. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L349
   }.sort #=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 ```
 
-TODO: Current `Ractor.select()` has same issue of `select(2)`, so this interface should be refined.
+TODO: Current `Ractor.select()` has the same issue of `select(2)`, so this interface should be refined.
 
 TODO: `select` syntax of go-language uses round-robin technique to make fair scheduling. Now `Ractor.select()` doesn't use it.
 
@@ -358,12 +358,12 @@ TODO: `select` syntax of go-language uses round-robin technique to make fair sch https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L358
 * `Ractor#close_incoming/outgoing` close incoming/outgoing ports (similar to `Queue#close`).
 * `Ractor#close_incoming`
   * `r.send(obj) ` where `r`'s incoming port is closed, will raise an exception.
-  * When the incoming queue is empty and incoming port is closed, `Ractor.recv` raise an exception. If incoming queue is not empty, it dequeues an object.
+  * When the incoming queue is empty and incoming port is closed, `Ractor.recv` raise an exception. If the incoming queue is not empty, it dequeues an object.
 * `Ractor#close_outgoing`
   * `Ractor.yield` on a Ractor which closed the outgoing port, it will raise an exception.
   * `Ractor#take` for a Ractor which closed the outgoing port, it will raise an exception. If `Ractor#take` is blocking, it will raise an exception.
 * When a Ractor terminates, the ports are closed automatically.
-  * Return value of the Ractor's block will be yield as `Ractor.yield(ret_val)`, even if the implementation terminate the based native thread.
+  * Return value of the Ractor's block will be yielded as `Ractor.yield(ret_val)`, even if the implementation terminates the based native thread.
 
 
 Example (try to take from closed Ractor):
@@ -478,7 +478,7 @@ Now only `T_FILE`, `T_STRING` and `T_ARRAY` objects are supported. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L478
 
 * `T_FILE` (`IO`, `File`): support to send accepted socket etc.
 * `T_STRING` (`String`): support to send a huge string without copying (fast).
-* `T_ARRAY` (`Array'): support to send a huge Array without re-allocating the array's buffer. However, all of referred objects from the array should be moved, so it is not so fast.
+* `T_ARRAY` (`Array'): support to send a huge Array without re-allocating the array's buffer. However, all of the referred objects from the array should be moved, so it is not so fast.
 
 To achieve the access prohibition for moved objects, _class replacement_ technique is used to implement it. 
 
@@ -492,7 +492,7 @@ The following objects are shareable. https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L492
     * Numeric objects: `Float`, `Complex`, `Rational`, big integers (`T_BIGNUM` in internal)
     * All Symbols.
   * Frozen `String` and `Regexp` objects (which does not have instance variables)
-  * In future, "Immutable" objects (frozen and only refer shareable objects) will be supported (TODO: introduce an `immutable` flag for objects?)
+  * In future, "Immutable" objects (frozen and only refer to shareable objects) will be supported (TODO: introduce an `immutable` flag for objects?)
 * Class, Module objects (`T_CLASS`, `T_MODULE` and `T_ICLASS` in internal)
 * `Ractor` and other objects which care about synchronization.
 
@@ -533,7 +533,7 @@ Note that without using Ractors, these additional semantics is not needed (100% https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L533
 
 ### Global variables
 
-Only main Ractor (a Ractor created at starting of interpreter) can access global variables.
+Only the main Ractor (a Ractor created at starting of interpreter) can access global variables.
 
 ```ruby
   $gv = 1
@@ -550,7 +550,7 @@ Only main Ractor (a Ractor created at starting of interpreter) can access global https://github.com/ruby/ruby/blob/trunk/doc/ractor.md#L550
 
 ### Instance variables of shareable objects
 
-Only main Ractor can access instance variables of shareable objects.
+Only the main Ractor can a (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]