title: Must user provided terminate() function be thread-safe?
body: <p>As stated in <a href="http://en.cppreference.com/w/cpp/error/terminate">http://en.cppreference.com/w/cpp/error/terminate</a> there are many reasons to call terminate. I can imagine case where just almost in the same time some of these reasons happen in two threads. </p>
  
  <p><strong>Q1</strong> Can the terminate function set by <code>std::set_terminate</code> be called twice or more at the same time, by the same time I mean second call begins before first has ended. </p>
  
  <pre><code>  Thread1   Thread2
      |          |
      _          |
      t          |
      e          |
      r          |
      m          |
      i          _
      n          t
      a          e
      t          r
      e          m
      -          ?
  </code></pre>
  
  <p><strong>Q2</strong> If Q1==YES, then what happens if first terminate ended. I guess if it ended with std::abort, then program ends, but what happens if user provided terminate does not abort program?    </p>
  
  <p><strong>Q3</strong> Is the terminate function set by <code>std::set_terminate</code> called in context of the thread which caused this terminate call?    </p>