Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.08;
Скачать: CL | DM;

Вниз

Хочу сказать спасибо :)   Найти похожие ветки 

 
Riply ©   (2008-12-14 00:25) [0]

[17] Игорь Шевченко ©   (14.12.08 00:06)
> Счетчик ссылок строки изменяется командой, использующей монопольный доступ к ячейке памяти.
> Еще раз советую изучить system.pas, в части функций, начинающихся на _LStr

Век живи - век учись :)
Спасибо.

Спасибо и заронившим сомнения :)


 
antonn ©   (2008-12-14 00:53) [1]

а фото будет? :)


 
DVM ©   (2008-12-14 00:56) [2]


> Riply ©   (14.12.08 00:25)  

На практике знание этого факта мало что меняет


 
Пробегал2....   (2008-12-14 01:06) [3]

Удалено модератором
Примечание: Обсуждение модерирования


 
Пробегал2....   (2008-12-14 01:09) [4]

Если кому интересно - вот краткая выдержка из ветки, надеюсь я сейчас ничего не нарушаю:

Потокобезопасен ли тип string?

Пробегал2....   (13.12.08 22:21)
Подумалось вот тут... Всем известен тип string, известна его структура и свойства при копировании. Но предусмотрено ли в типе string потокобезопасность или он является таковым по своей структуре? Или он не потокобезопасный?

Допустим, где-то в программе имеем:

s1 := s2;

Далее s1 передается в один поток, а s2 в другой поток. Понятно, что при таком копировании реально s1 и s2 будут ссылаться на одну строку. Далее элементарный вариант, в первом потоке делается:

s3 := s1

в другом

s4 := s2

что если эти операции будут совершены в одно и тоже время? По идее счетчик ссылок должен быть увеличен на 2. Но в том же Рихтере наглядно показано как i:=i+1 одновременно в разных потоках может привести к результатам, отличным от увеличения i на 2. Или счетчик ссылок в string увеличивается с помощью InterlockedIncreament?
Можно еще кучу ситуаций придумать, я думаю...

В общем, я к чему - потокобезопасен ли "хитрый" тип string или нет? Если нет - для меня это станет неожиданностью и поводом задуматься. Раньше об этом даже не думал, я знал "хитрость" string"а, но работал всегда так, как будто s1 := s2 - получаются разные строчки, в принципе так и должно быть по задумке, реализация скрытая. Но что насчет многопоточности?

Городской Шаман   (13.12.08 22:38)

> Пробегал2....   (13.12.08 22:21)  

В VSC++ 6.0 не потокобезопасен, в 7.0 баг пофиксили. Зависит от реализации STL.

Ну или для Delphi зависит от реализации компилятора. Хотя в 7-рке безопасен.

Пробегал2....   (13.12.08 22:46)
Городской Шаман   (13.12.08 22:38)

То есть, точно начиная с D7 стриги потокобезопасны? Ясно, спасибо.
Единственное, может хотелось бы официального подтверждения сего факта.

Городской Шаман   (13.12.08 22:51)

> Пробегал2....   (13.12.08 22:46) [4]
>
> Городской Шаман   (13.12.08 22:38) [3]
>
> То есть, точно начиная с D7 стриги потокобезопасны?

Может и более с ранними версиями они работают нормально. Но начиная с D7 они точно потокобезопасны.

Единственно что во время присваивания как string так и переменной любого другого типа лучше входить в критическую секцию, так как во время присваивания данные могут изменится, а после уже нет.

Игорь Шевченко ©   (13.12.08 23:24)

> Но предусмотрено ли в типе string потокобезопасность

Предусмотрена. Достаточно изучить system.pas


 
Пробегал2....   (2008-12-14 01:10) [5]

к сожалению, видимо, ИШ написал еще один пост, но его я уже не застал. Если кто повторит - спасибо.


 
jack128_   (2008-12-14 01:16) [6]


> Если кто повторит - спасибо.

Э-э. Рипли в заглавном посте вроде как повторила. Не??


 
palva ©   (2008-12-14 10:01) [7]


> Э-э. Рипли в заглавном посте вроде как повторила. Не??

Это к кому вопрос? Для того чтобы ответить на него, надо прочитать первоначальный пост, а Пробегал2 его не прочитал. Уж наверно ИШ написал там что-то еще, из-за чего ветку и грохнули.

Я тоже его пост не прочитал.

К Пробегал2. Не стоит провоцировать других на цитирование удаленных веток. Повторивший может сильно пострадать.



Страницы: 1 вся ветка

Текущий архив: 2009.02.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
6-1198423746
maxistent
2007-12-23 18:29
2009.02.08
Как получить свой ИП?


2-1230111093
slava
2008-12-24 12:31
2009.02.08
TWebBrowser + HTML в ресурсах + img на диске


2-1230194832
Xmen
2008-12-25 11:47
2009.02.08
Время ожедания сервера


15-1229124812
No_Dead
2008-12-13 02:33
2009.02.08
iertutil.dll не был найден... как решить проблему?


2-1230283621
RUBEY
2008-12-26 12:27
2009.02.08
Где скрывается компонент TNMSMTP