logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Documentation

       Module Domain
        : sigendAlertunstable.  The Domain interface may change in incompatible ways in the future.

       Domains.

       See 'Parallel programming' chapter in the manual.

       type!'at

       A domain of type 'at runs independently, eventually producing a result of type 'a, or an exception

       valspawn : (unit->'a)->'atspawnf creates a new domain that runs in parallel with the current domain.

       RaisesFailure if the program has insufficient resources to create another domain.

       valjoin : 'at->'ajoind blocks until domain d runs to completion. If d results in a value, then that is returned by joind
       . If d raises an uncaught exception, then that is re-raised by joind .

       typeid = private int

       Domains have unique integer identifiers

       valget_id : 'at->idget_idd returns the identifier of the domain dvalself : unit->idself() is the identifier of the currently running domain

       valbefore_first_spawn : (unit->unit)->unitbefore_first_spawnf  registers  f  to  be called before the first domain is spawned by the program. The
       functions registered with before_first_spawn are called on  the  main  (initial)  domain.  The  functions
       registered  with  before_first_spawn are called in 'first in, first out' order: the oldest function added
       with before_first_spawn is called first.

       RaisesInvalid_argument if the program has already spawned a domain.

       valat_exit : (unit->unit)->unitat_exitf registers f to be called when the  current  domain  exits.  Note  that  at_exit  callbacks  are
       domain-local and only apply to the calling domain. The registered functions are called in 'last in, first
       out' order: the function most recently added with at_exit is called first. An example:

       lettemp_file_key=Domain.DLS.new_key(fun_->lettmp=snd(Filename.open_temp_file"""")inDomain.at_exit(fun()->close_out_noerrtmp);tmp)

       The  snippet  above  creates  a key that when retrieved for the first time will open a temporary file and
       register an at_exit callback to close it, thus guaranteeing the descriptor is  not  leaked  in  case  the
       current domain exits.

       valcpu_relax : unit->unit

       If  busy-waiting,  calling  cpu_relax  ()  between  iterations  will  improve  performance  on  some  CPU
       architectures

       valis_main_domain : unit->boolis_main_domain() returns true if called from the initial domain.

       valrecommended_domain_count : unit->int

       The recommended maximum number of domains which  should  be  running  simultaneously  (including  domains
       already running).

       The value returned is at least 1 .

       valself_index : unit->int

       The index of the current domain. It is an integer unique among currently-running domains, in the interval
       0;N-1 where N is the peak number of domains running simultaneously so far.

       The  index of a terminated domain may be reused for a new domain. Use (Domain.self():>int) instead for
       an identifier unique among all domains ever created by the program.

       Since 5.3

       moduleDLS:sigend

OCamldoc                                           2025-06-12                                         Domain(3o)

Module

       Module   Domain

Name

       Domain - no description

See Also