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


Groups > comp.programming.threads > #1123

Re: Safe accesses of global arrays in signal handlers?

Message-ID <h4hkj9-4fn.ln1@wilbur.25thandClement.com> (permalink)
From William Ahern <william@wilbur.25thandClement.com>
Subject Re: Safe accesses of global arrays in signal handlers?
Newsgroups comp.programming.threads, comp.unix.programmer
References <accvmcFog2gU1@mid.individual.net> <pan.2012.09.25.11.15.59.228000@nowhere.com> <acik2gF3panU1@mid.individual.net> <pan.2012.09.27.12.35.52.872000@nowhere.com> <aco3jeFcbohU1@mid.individual.net>
Date 2012-09-29 17:42 -0700

Cross-posted to 2 groups.

Show all headers | View raw


Markus Elfring <Markus.Elfring@web.de> wrote:
> > Doing anything substantial in a signal handler is problematic.

> Do you see difficulties from read/write accesses on global/shared arrays there?
> Are atomic adjustments eventually needed for such a data type?
> Is the handling of atomicity relevant here?

What do you mean by shared? For example, assigning to an element of a file
scoped array like this should be fine:

	volatile sig_atomic_t foo[NSIG];

	void handler(int signo) {
		foo[signo] = 1;
	}

But what then? How do you process that? Other code can't simply scan the
array and, e.g., reset foo[SIGHUP] back to 0, unless it doesn't care about
missing any SIGHUP signals between reading and resetting the value.

You could have two arrays, with the signal handler producer and the signal
handler consumer each incrementing their own array. But you have to mask out
signals in your signal handler, because signals can interrupt signal
handlers, too.

These tricks aren't really needed anymore. On just about every platform
where you have to worry about these things, you have specialized interfaces
like kqueue, signalfd, sigtimedwait, pselect, et al which allow you to
synchronously query signal notifications.

Back to comp.programming.threads | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-25 08:01 +0200
  Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-25 12:15 +0100
    Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-27 11:20 +0200
      Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-09-27 13:23 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-28 13:25 +0200
      Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-27 13:35 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-28 13:48 +0200
          Re: Safe accesses of global arrays in signal handlers? Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-09-28 18:34 +0200
            Re: Safe accesses of global arrays in signal handlers? scott@slp53.sl.home (Scott Lurndal) - 2012-09-28 17:54 +0000
          Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-28 18:26 +0100
            Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-29 13:44 +0200
              Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-29 20:37 +0100
                Re: Safe accesses of global arrays in signal handlers? William Ahern <william@wilbur.25thandClement.com> - 2012-09-29 17:31 -0700
                Signal handlers writing into pipes Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 13:21 +0200
                Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-10-01 18:04 +0100
                Signal handlers writing into pipes Markus Elfring <Markus.Elfring@web.de> - 2012-10-03 16:36 +0200
                Re: Signal handlers writing into pipes Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-10-03 17:07 +0100
                Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 13:12 +0200
                Re: Safe accesses of global arrays in signal handlers? Nobody <nobody@nowhere.com> - 2012-09-30 20:46 +0100
        Re: Safe accesses of global arrays in signal handlers? Geoff Clare <geoff@clare.See-My-Signature.invalid> - 2012-09-28 13:39 +0100
        Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-29 13:15 +0200
          Re: Safe accesses of global arrays in signal handlers? William Ahern <william@wilbur.25thandClement.com> - 2012-09-29 17:42 -0700
            Re: Safe accesses of global arrays in signal handlers? Markus Elfring <Markus.Elfring@web.de> - 2012-09-30 14:04 +0200
  Re: Safe accesses of global arrays in signal handlers? Rainer Weikusat <rweikusat@mssgmbh.com> - 2012-09-25 13:27 +0100

csiph-web