Этот код
procedure MyThreadTestA(const AStr: string);
быстрее, чем
procedure MyThreadTestB(AStr: string);
Выполняя одну и ту же работу, оба передают указатель.
Однако версия B «правильно» обновляет счетчик ссылок AStr
и делает копию, если я его изменяю.
оба передают указатель.
Однако версия B «правильно» обновляет счетчик ссылок AStr
и делает копию, если я его изменяю.
оба передают указатель.
Однако версия B «правильно» обновляет счетчик ссылок AStr
и делает копию, если я его изменяю.
Версия A передает только указатель, и только компилятор не позволяет мне изменить AStr
.
Версия A небезопасна, если я выполняю грязные трюки в Ассемблере или иным образом, чтобы обойти защиту компилятора, это хорошо известно, но ...
Передается AStr
по ссылке как параметр const
, потокобезопасный?
Что произойдет, если счетчик ссылок AStr
в каком-то другом потоке станет равен нулю и строка будет уничтожена?