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

Вниз

Многопоточное приложение   Найти похожие ветки 

 
misha_gr   (2010-03-16 14:04) [0]

Уважаемые Мастера. Возник у меня следующий вопрос. Если я использую наследник TThread, получается, я не могу в Execute использовать множество функций Delphi? Например, ну, какой-нить безобидный IntToStr - уже небезопасен?


 
Медвежонок Пятачок ©   (2010-03-16 14:05) [1]

IntToStr может быть запросто небезопасен и будучи вызванным в основном потоке.


 
misha_gr   (2010-03-16 14:08) [2]

> IntToStr может быть запросто небезопасен и будучи вызванным в
> основном потоке.

нельзя ли пояснить?


 
Медвежонок Пятачок ©   (2010-03-16 14:09) [3]

запросто.

десять вторичных потоков меняют значение глобального интегера.
а в главном потоке мы делаем IntToStr этому интегеру.


 
misha_gr   (2010-03-16 14:18) [4]

Ну кагбэ предполагается, что общие ресурсы защищены от одновременного изменения тем или иным образом. Вопрос в другом: разные потоки одновременно вызывают IntToStr, для разных интегеров. Что мы имеем на выходе? Корректные значения или как получится?

Ну и имеется в виду куча общеприменяемых функций Delphi. IntToStr -  просто первое что в голову пришло.


 
Медвежонок Пятачок ©   (2010-03-16 14:19) [5]

Сам по себе ИнтТуСтр безопасен как секс в титановом презервативе без партнера.


 
Германн ©   (2010-03-16 14:21) [6]


> Вопрос в другом: разные потоки одновременно вызывают IntToStr,
>  для разных интегеров. Что мы имеем на выходе? Корректные
> значения или как получится?
>

Откуда такая паранойя?


 
Медвежонок Пятачок ©   (2010-03-16 14:24) [7]

Что мы имеем на выходе? Корректные значения или как получится?

На выходе, мы, (все нормальные земляне) имеем результат инттустр.


 
misha_gr   (2010-03-16 14:53) [8]

Хорошо, сформулируем вопрос по другому: потокобезопасная функция, как ее отличить от потокоНЕбезопасной? Как достигается потокобезопасность? Как написать потокобезопасную функцию?

 Вот локальные переменные, например, создаются новые экземпляры каждый раз при входе в функцию?


 
Медвежонок Пятачок ©   (2010-03-16 14:59) [9]

они потому локальными и называются, оттого что они не глобальные.


 
misha_gr   (2010-03-16 15:05) [10]

Локальными переменными они называются из-за области видимости. Уважаемый Пятачок, нет желания отвечать на поставленные вопросы - не тратьте своё время.


 
Медвежонок Пятачок ©   (2010-03-16 15:09) [11]

из-за области видимости

и у тебя есть мега-подозрение, все значения локальной переменной процедуры видимы во всех вызовах этой процедуры?

что мешает проверить?


 
Dennis I. Komarov ©   (2010-03-16 15:12) [12]


> misha_gr   (16.03.10 14:53) [8]

Потокобезопасность достигается пониманием как оно работает...


 
Медвежонок Пятачок ©   (2010-03-16 15:15) [13]

Потокобезопасность достигается пониманием как оно работает...

Оно видимо хочет чтобы ему здесь запостили раздел встроенного хелпа про девелопинг мультисреадед аппликайшен.


 
имя   (2010-03-16 15:20) [14]

Удалено модератором
Примечание: Читать - сколько угодно


 
Медвежонок Пятачок ©   (2010-03-16 15:30) [15]

встроенный хелп лежит под кнопкой F1


 
Демо ©   (2010-03-16 16:35) [16]


> misha_gr

http://forum.vingrad.ru/forum/topic-60076.html

Потокобезопасный код - код, в котором общие ресурсы, используемые в разных потоках, содержат при выполнении кода ожидаемое значение.



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.061 c
4-1231600539
Nucer
2009-01-10 18:15
2010.08.27
LSP (Layered Service Provider)


9-1185021098
AlexanderMS
2007-07-21 16:31
2010.08.27
Повторный вывод уже построенной сцены в OpenGL.


15-1275645758
Scot Storch
2010-06-04 14:02
2010.08.27
поиск в БД


2-1269445511
Kurilkin
2010-03-24 18:45
2010.08.27
TFrame


2-1265350338
Mery
2010-02-05 09:12
2010.08.27
сворачивание программы на панель задач





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский