View Source Reactive.Supervisor (Reactive State v0.2.3)

Default DynamicSupervisor to manage task creation and garbage collection.

Summary

Functions

Returns a specification to start this module under a supervisor.

Start the supervisor if needed (not recommended)

Garbage collect processes for a supervisor (Reactive.Supervisor by default)

Trigger computations for any stale reactive processes who have the option proactive: true

Functions

Returns a specification to start this module under a supervisor.

See Supervisor.

Start the supervisor if needed (not recommended)

Garbage collect processes for a supervisor (Reactive.Supervisor by default)

Options:

  • name: [pid or alias] (default: Reactive.Supervisor)
  • strategy: :counter (default :counter)
  • count: [integer] (default nil)
  • random: [boolean] (default false)

Example:

iex> use Reactive
iex> Reactive.Supervisor.ensure_started()
iex> ref = Ref.new(0)
iex> Reactive.Supervisor.gc()
iex> nil == Reactive.resolve_process(ref)

Reactive processes can be protected with the gc option:

iex> use Reactive
iex> Reactive.Supervisor.ensure_started()
iex> ref = Ref.new(0, gc: false)
iex> Reactive.Supervisor.gc()
iex> ^ref = Reactive.resolve_process(ref)

iex> use Reactive
iex> Reactive.Supervisor.ensure_started()
iex> ref = reactive gc: false do
...>    # some expensive computation
...> end
iex> Reactive.Supervisor.gc()
iex> ^ref = Reactive.resolve_process(ref)
Link to this function

trigger_proactive(opts \\ [])

View Source

Trigger computations for any stale reactive processes who have the option proactive: true

Example:

iex> use Reactive
iex> Reactive.Supervisor.ensure_started()
iex> num = Ref.new(0)
iex> ref =
...>   reactive proactive: true do
...>     get(num) + 1
...>   end
iex> Reactive.get_cached(ref)
1
iex> Ref.set(num, 1)
iex> Reactive.Supervisor.trigger_proactive()
iex> Reactive.get_cached(ref)
2