objects to do things. — Alec Sharp, “Smalltak by Example” http://sdmeta.gforge.inria.fr/FreeBooks/ByExample/SmalltalkByExampleNewRelease.pdf https://pragprog.com/articles/tell-dont-ask
a bad idea Integers are “immediates”, ie. architecture-dependent The rest are implemented in C (MRI/YARV), for efficiency http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
provides Thread and Fiber primitives Their underlying implementations vary from GIL to 1:1 models Rubinius and JRuby: real multithreading Rubinius provides an additional actor model http://merbist.com/2011/02/22/concurrency-in-ruby-explained/ http://www.jstorimer.com/products/working-with-ruby-threads http://rubini.us/doc/en/systems/concurrency/
Futures/Promises Channels Actors I/O reactor If possible, use Rubinius or JRuby Real threads Look for servers/clients using these https://github.com/celluloid/celluloid https://github.com/ruby-concurrency/concurrent-ruby https://github.com/celluloid/celluloid-io
in its stdlib (dRuby) Enables remote method calling Peer to peer Each remote method invocation is handled synchronously by a new server thread Not truly concurrent (Mutex needed) A distributed, immutable “tuplespace" is shared among all objects (Rinda) https://news.ycombinator.com/item?id=4696027 http://ruby-doc.org/docs/Distributed%20Ruby%20(drb%20and%20Rinda)/DistributedRuby.pdf