Sto cercando di capire cosa esattamente un punto di cancellazione è in C++. Ho letto:Che cos'è esattamente un punto di cancellazione?
man page e What are pthread cancellation points used for
ma sono ancora un po 'confuso su alcuni punti. Ad esempio, sto usando la funzione file write(). Apparentemente questo è un punto di cancellazione. Quindi quando chiamo write(), posso vedere che un altro thread può iniziare l'elaborazione (quindi il mio codice passa dal thread di scrittura a un altro thread), questo di solito accade quando il buffer di scrittura è pieno e deve essere svuotato prima della scrittura() può avere successo/completare.
Ma nella mia mente, questa non è una cancellazione di un filo, ma solo un blocco temporaneo/sospendere, e non c'è discussione "pulizia" da fare ...
Quindi la mia domanda è, fare la cancellazione i punti hanno relazione con i "punti di blocco"? - sono davvero la stessa cosa o c'è qualche differenza? Qualsiasi chiara descrizione "top-level" di cosa sia un punto di cancellazione sarebbe davvero utile.
Un punto di cancellazione, in generale, è un qualsiasi punto nel flusso di controllo in cui il controllo ritorna al programma di pianificazione. L'unico significato possibile di "cancellazione" è di non essere programmato di nuovo, quindi puoi cancellare qualcosa solo se puoi influenzare le decisioni di pianificazione. Le chiamate di sistema formano un'interazione naturale con lo scheduler, sebbene possano essercene altre. –
@KerrekSB Con questo commento e la risposta di Bogdan V, penso che questo abbia davvero senso per me ora, grazie :) –
Grazie a @KerrekSB per una spiegazione chiara, concisa e solida che menziona lo scheduler. – ifelsemonkey