У меня есть вызов сторонней библиотеки C++, которую я поместил в свой собственный поток (в настоящее время используется NSThread). Я хотел бы дать пользователю возможность остановить выполнение этого потока. (Я хорошо осведомлен о всех проблемах, которые это может вызвать, но я все еще хочу это сделать.)Как убить нить с помощью Objective C?
Согласно Apple's Thread Programming Guide, в Cocoa есть возможности для этого. Это правда для iPhone тоже, или мне приходится полагаться на потоки Posix для достижения моей цели?
Приветствия
MrMage
Если вы считаете, что хотите остановить поток напрямую и внешне без какого-либо примитива синхронизации, чтобы остановить его в известной точке, то нет, вы не понимаете проблем, которые могут возникнуть. Одна из этих проблем - это, скорее всего, авария или поврежденная память. Это неизбежно. – bbum
Даже если поток, который я хотел бы убить (рабочий поток), не использует ни один из объектов основного потока и наоборот? Мне сказал разработчик указанной библиотеки, что он с радостью использует такую отмену потока, чтобы остановить свои рабочие потоки, и что он не испытывает серьезных проблем. – MrMage
Если его библиотека использует любые вызовы системной библиотеки любым способом, то принудительное уничтожение потока приведет к неопределенному поведению. Это включает в себя malloc(), даже. Даже если он сейчас работает, продолжает ли он работать с обновлениями программного обеспечения и изменениями архитектуры, это совершенно другая проблема. – bbum