Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1230423124
Danco
2008-12-28 03:12
2009.02.08
Иконки в приложениях


2-1228830704
abhtr
2008-12-09 16:51
2009.02.08
UPPER не работает с русскими буквами


15-1228938459
js jin
2008-12-10 22:47
2009.02.08
Загрузка страницы


4-1204667510
Vemer
2008-03-05 00:51
2009.02.08
Как сделать PreView заставки на OpenGL?


13-1122370594
Tab
2005-07-26 13:36
2009.02.08
vcl программы на delphi 8 for .net?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский