According to APUE 2e Chapter 12.5:
If a function is reentrant with respect to multiple threads, we say that it is thread-safe. This doesn't tell us, however, whether the function is reentrant with respect to signal handlers. We say that a function that is safe to be reentered from an asynchronous signal handler is async-signal safe.
My questions are
Q1:
Is there a "general re-entrant" concept (which means re-entrantcy in all circumstances)? If there is, does general re-entrant equal to re-entrant with respect to both multi-thread and async-signal only? Or is there also a third condition that has to be considered when talking about general re-entrant?
Q2:
Thread safety doesn't imply async-signal safety, which is obvious. But, does async-signal safety imply thread safety for sure? I googled a lot, people are saying that it does, but I can't find any source for it.
Q3:
If answers to both Q1 and Q2 are yes, I guess general re-entrant just equals to async-signal safe?