Sha256: 8e1442edb0ca52d753d354c166f802cf6445e98e21a2753ec8d9bf0b394435b9
Contents?: true
Size: 1.75 KB
Versions: 4
Compression:
Stored size: 1.75 KB
Contents
# Require Gemfile gems require_relative "../lib/asynchronous" # you can use simple :c also instead of :concurrency # remember :concurrency is all about GIL case, so # you can modify the objects in memory # This is ideal for little operations in simultaneously or # when you need to update objects in the memory calculation = async :concurrency do sleep 2 4 * 2 end puts "hello concurrency" calculation.value += 1 puts calculation.value #>-------------------------------------------------- # or you can use simple {} without sym and this will be by default a # :concurrency pattern calculation = async { sleep 3; 4 * 3 } puts "hello simple concurrency" calculation.value += 1 # remember you have to use .value to cal the return value from the code block! puts calculation.value #>-------------------------------------------------- # now let's see the Parallelism # you can use simple :p also instead of :parallelism # remember :parallelism is all about real OS thread case, so # you CANT modify the objects in memory only copy on write modify # This is ideal for big operations where you need do a big process # and only get the return value so you can do big works without the fear of the # Garbage collector slowness or the GIL lock # when you need to update objects in the memory use :concurrency calculation = async :parallelism do sleep 4 4 * 5 end puts "hello parallelism" calculation.value += 1 puts calculation.value #>-------------------------------------------------- # more complex way puts "mixed usecase with arrays as return obj" calc1 = async :parallelism do sleep 4 # some big database processing brutal memory eater stuff [4*5,"hy"] end calc2 = async { [5+1,"sup!"] } puts calc1.value == calc2.value puts (calc1.value+calc2.value).inspect
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
asynchronous-1.0.4 | examples/async_patterns.rb |
asynchronous-1.0.3 | examples/async_patterns.rb |
asynchronous-1.0.2 | examples/async_patterns.rb |
asynchronous-1.0.1 | examples/async_patterns.rb |