интернирование просто делает копию в пуле и при повторе стринга просто выводит его копию. Не понимаю здесь связь
Иногда не копия, а оригинал.
Потому что в какой нибудь из частей сборки вы решили сделать lock(string) и кто нибудь ещё решил сделать тоже самое, в таком случае в силу интернирование строк(предположим, что среда CLR решила хранить две одинаковые строки, как один обьект в памяти) и возникнет проблема, что один поток будет блокировать работу другого, потому что ключ уже занят другим потоком
Думаю, имеется в виду, что можно таким образом непреднамеренную синхронизацию сделать, если два разных потока будут лочиться на двух разных строках, которые по факту заинтернированы.
Обсуждают сегодня