Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #97893

Re: select.poll and ppoll

From Marko Rauhamaa <marko@pacujo.net>
Newsgroups comp.lang.python
Subject Re: select.poll and ppoll
Date 2015-10-22 14:18 +0300
Organization A noiseless patient Spider
Message-ID <87eggnqhgq.fsf@elektro.pacujo.net> (permalink)
References <56287672$0$11117$c3e8da3@news.astraweb.com>

Show all headers | View raw


Steven D'Aprano <steve+comp.lang.python@pearwood.info>:

> I have select.poll, but I'm looking for something like ppoll instead. From 
> the Linux man page:
>
>    ppoll()
>        The relationship between poll() and ppoll() is analogous to the
>        relationship  between  select(2)  and  pselect(2):  like  pselect(2), 
>        ppoll()  allows  an  application to safely wait until either a file
>        descriptor becomes ready or until a signal is caught.
>
> Technically, *I* don't want this, it's one of my work-colleagues. He
> says:
>
> "My high-level goal is to run a callback function whenever the alsa
> mixer level changes. The C alsa API provides
> snd_mixer_elem_set_callback, but the Python API (import alsaaudio)
> seems to need me to get poll(2) descriptors"

I've never used ppoll or pselect. They are used to fix naive signal
handling in a main loop:

    while not signaled:
        select.poll(...)
        ...

The loop suffers from a race condition: the "signaled" flag, which is
set by a signal handler, might change between "while" and "select.poll".

The standard, classic way to solve the race condition is to replace the
"signaled" flag with an internal pipe. The signal handler writes a byte
into the pipe and select.poll() wakes up when the pipe becomes readable.
IOW, ppoll() and pselect() are not needed.


Marko

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

select.poll and ppoll Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-10-22 16:38 +1100
  Re: select.poll and ppoll Paul Rubin <no.email@nospam.invalid> - 2015-10-22 00:30 -0700
  Re: select.poll and ppoll Laura Creighton <lac@openend.se> - 2015-10-22 11:07 +0200
  Re: select.poll and ppoll Marko Rauhamaa <marko@pacujo.net> - 2015-10-22 14:18 +0300
    Re: select.poll and ppoll Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-10-25 22:30 +1100
      Re: select.poll and ppoll Marko Rauhamaa <marko@pacujo.net> - 2015-10-25 21:21 +0200
        Re: select.poll and ppoll Marko Rauhamaa <marko@pacujo.net> - 2015-10-25 21:23 +0200

csiph-web