Usually you pass a flag (e.g. a BOOL variable) inside the thread's params. The thread should repeatedly check this flag - if it is set, the thread returns.