title: What exactly is a cancellation point?
body: <p>I am trying to get my head around what exactly a cancellation point is in c++. I have read:</p>
  
  <p><a href="http://man7.org/linux/man-pages/man3/pthread_cancel.3.html" rel="noreferrer">man page</a> and <a href="https://stackoverflow.com/questions/23220206/what-are-pthread-cancelation-points-used-for">What are pthread cancellation points used for</a></p>
  
  <p>But I am still a little confused on certain points. For example, I am using the file write() function. Apparently this is a cancellation point. So when I call write(), I can see that another thread may start processing (so my code switches from the writing thread to another thread), this usually happens when the write-to buffer is full and needs to be emptied before the write() can succeed/complete.</p>
  
  <p>But in my mind, this is not a cancellation of a thread, but merely a temporary blocking/suspend, and there is no thread "cleanup" to do...</p>
  
  <p>So my question is, do cancellation points have relation to "blocking points"? - are they really the same thing, or is there some difference?
  Any clear "top-level" description of what a cancellation point is would be really useful.</p>