Являются ли строковые параметры `const` (поточно) безопасными

Этот код

procedure MyThreadTestA(const AStr: string);

быстрее, чем

procedure MyThreadTestB(AStr: string);

Выполняя одну и ту же работу, оба передают указатель.

Однако версия B «правильно» обновляет счетчик ссылок AStr и делает копию, если я его изменяю.
оба передают указатель.

Однако версия B «правильно» обновляет счетчик ссылок AStr и делает копию, если я его изменяю.
оба передают указатель.

Однако версия B «правильно» обновляет счетчик ссылок AStr и делает копию, если я его изменяю.
Версия A передает только указатель, и только компилятор не позволяет мне изменить AStr .

Версия A небезопасна, если я выполняю грязные трюки в Ассемблере или иным образом, чтобы обойти защиту компилятора, это хорошо известно, но ...

Передается AStr по ссылке как параметр const , потокобезопасный?
Что произойдет, если счетчик ссылок AStr в каком-то другом потоке станет равен нулю и строка будет уничтожена?

10
задан Johan - reinstate Monica 1 May 2011 в 21:38
поделиться