Path: csiph.com!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!feeds.phibee-telecom.net!dedekind.zen.co.uk!zen.net.uk!hamilton.zen.co.uk!reader03.nrc01.news.zen.net.uk.POSTED!not-for-mail Newsgroups: comp.programming.threads,comp.unix.programmer From: Geoff Clare Subject: Re: Safe accesses of global arrays in signal handlers? References: User-Agent: XPN/1.2.6 (Street Spirit ; Linux) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Date: Fri, 28 Sep 2012 13:39:30 +0100 Message-ID: <2digj9-fjk.ln1@leafnode-msgid.gclare.org.uk> Lines: 28 Organization: Zen Internet NNTP-Posting-Host: e43bf396.news.zen.co.uk X-Trace: DXC=8jnNgIJ>4Lnko]em;Y=Pd`f2FgniPJjgb=dR0\ckLKG`WeZ<[7LZNRfMZl7=;>L25gGe\aWc^ahef0ETdE17DIfk5BH3gX6aE6j X-Complaints-To: abuse@zen.co.uk Xref: csiph.com comp.programming.threads:1109 comp.unix.programmer:3363 Nobody wrote: > Doing anything substantial in a signal handler is problematic. So > typically you just want to notify a thread which blocks until > notification. There are a few async-signal-safe functions which can be > used for notification, including sem_post(), sigqueue(), raise() and > write(). A complete list is at: > > http://pubs.opengroup.org/[...]/functions/V2_chap02.html#tag_15_04_03 > > Note that none of the pthread functions are in that list. That's going to change in SUSv4 TC1 (which is finished but awaiting final approval by IEEE and The Open Group). It adds pthread_equal(), pthread_kill() and pthread_sigmask() to the list of async-signal-safe functions. Note that the additions are not because the standard developers' expect them to be used for anything useful in signal handlers. They are being done to correct some inconsistencies. Namely that raise(sig) is required to be equivalent to pthread_kill(pthread_self(), sig) and raise() is async-signal-safe, and that pthread_sigmask() is required to be equivalent to sigprocmask(), without the single-thread restriction, and sigprocmask() is async-signal-safe. -- Geoff Clare