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

iv_task_register, iv_task_unregister, iv_task_registered - deal with ivykis tasks

Description

       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 unregistered.

       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 structiv_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.

Name

       iv_task_register, iv_task_unregister, iv_task_registered - deal with ivykis tasks

See Also

ivykis(3), iv_examples(3)

ivykis                                             2010-08-15                                         iv_task(3)

Synopsis

#include<iv.h>

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

       voidIV_TASK_INIT(structiv_task*task);voidiv_task_register(structiv_task*task);voidiv_task_unregister(structiv_task*task);intiv_task_registered(conststructiv_task*task);

See Also