examples/simple_async_processing.rb in procemon-0.3.4 vs examples/simple_async_processing.rb in procemon-0.4.0

- old
+ new

@@ -1,40 +1,56 @@ # Require Gemfile gems require_relative "../lib/procemon" -calculation = async { +# 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 10 - 4 * 4 -} + sleep 2 + 4 * 2 -puts "hello world" +end +puts "hello concurrency" -calculation += 1 +calculation.value += 1 -puts calculation +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 } -test1 = async { +puts "hello simple concurrency" - sleep 8 - hello= 14 - sup= "the world is yours" +calculation.value += 1 - sup +# remember you have to use .value to cal the return value from the code block! +puts calculation.value -} -test2 = async { - sleep(4) - "world" -} +#>-------------------------------------------------- +# 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 -start_time= Time.now + sleep 4 + 4 * 5 -asd= test1 -puts asd +end +puts "hello parallelism" -puts test1.value == test2.value -puts Time.now-start_time +calculation.value += 1 + +puts calculation.value + +#>-------------------------------------------------- \ No newline at end of file