int
db_env_set_func_yield(int (*func_yield)(void));
Description
The Berkeley DB library requires the ability to yield the processor from the current
thread of control to any other waiting threads of control.
The func_yield argument must conform to the following interface:
int yield(void);
The func_yield function must be able to cause the rescheduling
all participants in the current Berkeley DB environment, whether threaded or
not. It may be incorrect to supply a thread yield function if
more than a single process is operating in the Berkeley DB environment. This
is because many thread-yield functions will not allow other processes to
run, and the contested lock may be held by another process, not by another
thread.
If no func_yield function is specified, or if the yield
function returns an error, the function specified by the
db_env_set_func_sleep entry will be used instead or subsequently,
i.e., if no yield function is specified, or it is possible for
the yield function to fail, the sleep function
must cause the processor to reschedule any waiting threads of
control for execution.
The func_yield function must return the value of errno on
failure and 0 on success.
The db_env_set_func_yield interface affects the entire application, not a single
database or database environment.
While the db_env_set_func_yield interface may be used to configure Berkeley DB at any time
during the life of the application, it should normally be called before
making any calls to the db_env_create or db_create functions.
The db_env_set_func_yield function returns a non-zero error value on failure and 0 on success.