Я читал это: http://en.wikipedia.org/wiki/Thread_safety
Является ли следующая функция безопасной для потоков?
void foo(int y){
int * x = new int[50];
/*...do some stuff with the allocated memory...*/
delete [] x;
}
В статье говорится, что для обеспечения потокобезопасности вы можете использовать только переменные из стека. В самом деле? Зачем? Не будут ли последующие вызовы вышеуказанной функции распределять память в другом месте?
Изменить: Ах. Похоже, я неправильно понял эту часть статьи:
Подпрограмма является реентерабельной и, следовательно, потокобезопасной, если
- единственными переменными, которые он использует, являются из стека
(я понял, что
Подпрограмма является реентерабельной и, следовательно, потокобезопасной, если и только если
- единственными переменными, которые он использует, являются из стека
что в соответствии с приведенными ниже ответами не так)