db_env_set_func_yield
|
|
#include <db.h>
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
of 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;
that is, if no yield function is specified, or if 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 interface must return the value of errno on
failure and 0 on success.
The db_env_set_func_yield method configures all operations performed by a process and
all of its threads of control, not operations confined to a single
database environment.
Although the db_env_set_func_yield interface may be called at any time during the
life of the application, it should normally be called before making
calls to the db_env_create or db_create methods.
The db_env_set_func_yield method returns a non-zero error value on failure and 0 on success.
Errors
The db_env_set_func_yield method may fail and return a non-zero error for the following conditions:
- EINVAL
- An invalid flag value or parameter was specified.
The db_env_set_func_yield method may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
If a catastrophic error has occurred, the db_env_set_func_yield method may fail and
return DB_RUNRECOVERY,
in which case all subsequent Berkeley DB calls will fail in the same way.
See Also
Run-time configuration
Copyright Sleepycat Software
|