The same quote from IEEE Std 1003.1 again:
All functions not in the above table are considered to be unsafe
with respect to signals. In the presence of signals, all functions
defined by this volume of IEEE Std 1003.1-2001 shall behave as
defined when called from or interrupted by a signal-catching
function, with a single exception: when a signal interrupts an
unsafe function and the signal-catching function calls an unsafe
function, the behavior is undefined.
http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html
It says "interrupted by a signal-catching function". And the
signal-catching function is executed on the thread that the signal is
delivered to. Given no other notes, it is natural to interpret that a
signal only interrupts the function in the thread that the
signal-catching function is executed.
"Multithreading in the Solaris Environment" says:
An asynchronous signal interrupts the signalled thread at some
arbitrary point in its execution