Если два потока вызывают одну функцию «одновременно», нужно ли защищать переменные , локальные для функции (не ivars) в блоке мьютекса / синхронизации, чтобы другие потоки не могли их изменять / манипулировать?
Или же каждый поток получает свою собственную копию локальных переменных в стеке, как / должен делать рекурсивный вызов?
Использовать приведенную ниже крайне фальшивую и бессмысленную функцию в качестве примера того, чтоЯ не уверен, что потокобезопасен:
- (TicketResponseObj *)createTicketResponse:(NSHTTPURLResponse *)httpResponse {
//local variable declaration and assignment
NSInteger localVar_RespCode = [httpResponse statusCode];
//local object ptr declaration, obj allocation, and ptr assignment
TicketResponseObj *localObj_TicketResponse = [[TicketResponseObj alloc] initWithCode:localVar_RespCode];
//return ptr to instance of local object
return localObj_TicketResponse;
}
Пожалуйста, предположите, что TicketResponseObj's initWithCode
является потокобезопасным.Я использую LLVM-GCC 4.2 в качестве моего компилятора и нацеливаюсь на архитектуру armv7.(Этот пример функции тоже может быть статичным, если это имеет значение?)
Извините, я знаю, что это потенциально глупый вопрос, но мой друг предположил, что ответ полностью зависит от компилятора / архитектуры и т. Д.
Спасибо за вашу помощь и терпение!