Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

coro::select(3pm) [debian man page]

Select(3pm)						User Contributed Perl Documentation					       Select(3pm)

NAME
Coro::Select - a (slow but coro-aware) replacement for CORE::select SYNOPSIS
use Coro::Select; # replace select globally (be careful, see below) use Core::Select 'select'; # only in this module use Coro::Select (); # use Coro::Select::select DESCRIPTION
This module tries to create a fully working replacement for perl's "select" built-in, using "AnyEvent" watchers to do the job, so other threads can run in parallel to any select user. As many libraries that only have a blocking API do not use global variables and often use select (or IO::Select), this effectively makes most such libraries "somewhat" non-blocking w.r.t. other threads. This implementation works fastest when only very few bits are set in the fd set(s). To be effective globally, this module must be "use"'d before any other module that uses "select", so it should generally be the first module "use"'d in the main program. Note that overriding "select" globally might actually cause problems, as some "AnyEvent" backends use "select" themselves, and asking AnyEvent to use Coro::Select, which in turn asks AnyEvent will not quite work. You can also invoke it from the commandline as "perl -MCoro::Select". To override select only for a single module (e.g. "Net::DBus::Reactor"), use a code fragment like this to load it: { package Net::DBus::Reactor; use Coro::Select qw(select); use Net::DBus::Reactor; } Some modules (notably POE::Loop::Select) directly call "CORE::select". For these modules, we need to patch the opcode table by sandwiching it between calls to "Coro::Select::patch_pp_sselect" and "Coro::Select::unpatch_pp_sselect": BEGIN { use Coro::Select (); Coro::Select::patch_pp_sselect; require evil_poe_module_using_CORE::SELECT; Coro::Select::unpatch_pp_sselect; } BUGS
For performance reasons, Coro::Select's select function might not properly detect bad file descriptors (but relying on EBADF is inherently non-portable). SEE ALSO
Coro::LWP. AUTHOR
Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/ perl v5.14.2 2012-04-13 Select(3pm)

Check Out this Related Man Page

Storable(3pm)						User Contributed Perl Documentation					     Storable(3pm)

NAME
Coro::Storable - offer a more fine-grained Storable interface SYNOPSIS
use Coro::Storable; DESCRIPTION
This module implements a few functions from the Storable module in a way so that it cede's more often. Some applications (such as the Deliantra game server) sometimes need to load large Storable objects without blocking the server for a long time. This is being implemented by using a perlio layer that feeds only small amounts of data (4096 bytes per call) into Storable, and "Coro::cede"'ing regularly (at most 100 times per second by default, though). As Storable is not reentrant, this module also wraps most functions of the Storable module so that only one freeze or thaw is done at any one moment (and recursive invocations are not currently supported). FUNCTIONS
$ref = thaw $pst Retrieve an object from the given $pst, which must have been created with "Coro::Storable::freeze" or "Storable::store_fd"/"Storable::store" (sorry, but Storable uses incompatible formats for disk/mem objects). This function will cede regularly. $pst = freeze $ref Freeze the given scalar into a Storable object. It uses the same format as "Storable::store_fd". This functino will cede regularly. $pst = nfreeze $ref Same as "freeze" but is compatible to "Storable::nstore_fd" (note the "n"). $pst = blocking_freeze $ref Same as "freeze" but is guaranteed to block. This is useful e.g. in "Coro::Util::fork_eval" when you want to serialise a data structure for use with the "thaw" function for this module. You cannot use "Storable::freeze" for this as Storable uses incompatible formats for memory and file images, and this module uses file images. $pst = blocking_nfreeze $ref Same as "blocking_freeze" but uses "nfreeze" internally. $guard = guard Acquire the Storable lock, for when you want to call Storable yourself. Note that this module already wraps all Storable functions, so there is rarely the need to do this yourself. AUTHOR
Marc Lehmann <schmorp@schmorp.de> http://home.schmorp.de/ perl v5.14.2 2012-04-13 Storable(3pm)
Man Page