У треда должна быть обертка, в которой будет булево свойство (interruptionRequested
, например), которую треду необходимо проверять самостоятельно между атомарными операциями своей полезной нагрузки. ("Скопировал файл, проверил - false
, скопировал следующий, проверил - false
, скопировал еще один, проверил - true
, завершился").
То есть тред сам решает, когда ему остановится, но мы можем посигналить ему об этом. Иначе мы рискуем поломать данные, т.к. не будем наверняка знать, в каком состоянии они находятся.