Безопасно ли выделять NSThread, а затем initWithTarget поток несколько раз? - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть специальный патч для Quartz Composer, который является многоадресным приемником.Он запускает NSThread для демона и затем перезапускает его, когда пользователь изменяет адрес многоадресной рассылки или номер порта.

Когда запускается патч, я делаю следующее для запуска нового потока.

daemonThread = [NSThread alloc];

Затем, каждый раз, когда я запускаю или перезапускаю поток, я переинициализирую его следующим образом:

[daemonThread initWithTarget:multicastDaemon selector:@selector(doWorkWithDelegate:) object:self];
[daemonThread start];

Конечно, я завершаю поток каждый раз перед тем, как перезапустить его.Я не использую сборщик мусора, и я выпускаю daemonThread после выхода патча.

Меня беспокоит то, что я не уверен, что произойдет, когда я снова и снова инициализирую этот поток.Я заметил, что Instruments говорит мне, что я пропускаю NSThread и autoreleasepool, который, как я подозреваю, может быть моим пулом из потока демона.Я вижу, что эти числа увеличиваются каждый раз, когда я перезапускаю процесс, но я недостаточно знаком с Инструментами, чтобы знать, что он говорит мне.

Должен ли я волноваться?

1 Ответ

3 голосов
/ 17 ноября 2011

Не безопасно вызывать любой метод init... для любого объекта, который уже был инициализирован. Это включает в себя NSThread.

...