Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Select(3)	      User Contributed Perl Documentation	     Select(3)

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/SUPPORT/CONTACT
	  Marc A. Lehmann <schmorp@schmorp.de>
	  http://software.schmorp.de/pkg/Coro.html

perl v5.32.0			  2020-07-29			     Select(3)

NAME | SYNOPSIS | DESCRIPTION | BUGS | SEE ALSO | AUTHOR/SUPPORT/CONTACT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Coro::Select&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help