Sha256: 40efd408c86110608834a004255f67fdbab6a8f4d7952965ab7758ac9839c256

Contents?: true

Size: 1.47 KB

Versions: 3

Compression:

Stored size: 1.47 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

#>--------------------------------------------------

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
asynchronous-1.0.0 examples/async_patterns.rb
asynchronous-0.1.1 examples/async_patterns.rb
asynchronous-0.1.0 examples/async_patterns.rb