GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  CORO::SELECT (3)

.ds Aq ’

NAME

Coro::Select - a (slow but coro-aware) replacement for CORE::select

CONTENTS

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/SUPPORT/CONTACT



   Marc A. Lehmann <schmorp@schmorp.de>
   http://software.schmorp.de/pkg/Coro.html



Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 SELECT (3) 2015-10-16

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.