Provided by: libivykis-dev_0.36.2-1_amd64 bug


       iv_task_register, iv_task_unregister, iv_task_registered - deal with ivykis tasks


       #include <iv.h>

       struct iv_task {
               void            *cookie;
               void            (*handler)(void *);

       void IV_TASK_INIT(struct iv_task *task);
       void iv_task_register(struct iv_task *task);
       void iv_task_unregister(struct iv_task *task);
       int iv_task_registered(struct iv_task *task);


       The functions iv_task_register and iv_task_unregister register, respectively unregister, a
       task with the current thread's ivykis event loop.  iv_task_registered on  a  task  returns
       true if that task is currently registered with ivykis.

       A  task is like a timer, but with an immediate timeout.  When a task is registered, unless
       it is unregistered again first, the callback function specified by ->handler is guaranteed
       to  be called once, in the thread that the task was registered in, some time after control
       returns to the ivykis main loop but  before  ivykis  will  sleep  for  more  events,  with
       ->cookie  as  its  first  and sole argument.  When this happens, the task is transparently

       Tasks are mainly used for scheduling code for execution where it  is  not  appropriate  to
       directly  run  that  code in the calling context (for example, because the current context
       might be run as a callback function where the caller expects certain conditions to  remain
       invariant after the callback completes).

       The application is allowed to change the ->cookie and ->handler members at any time.

       A given struct iv_task can only be registered in one thread at a time, and a task can only
       be unregistered in the thread that it was registered from.

       There is no limit on the number of tasks registered at once.

       See iv_examples(3) for programming examples.


       ivykis(3), iv_examples(3)