Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Два потока и общая процедура


начинающий2 ©   (2011-01-18 08:33:00) 

Мне бы узнать как будут работать два потока  при вызове одной и той же процедуры. Будут созданы две копии процедуры для каждого потока или потоки будут работать с одной процедурой одновременно?


han_malign   (2011-01-18 10:40:00) [1]

больше того, если процедура в DLL, то сегмент кода еще и несколькими процессами используется(но в разных сегментах данных, если сегмент данных не был помечен линковщиком как разделяемый(shared))...


Ega23   (2011-01-18 10:36:00) [2]


>  Так что если процедура использует какие-то глобальные

Скорее, не использует, а изменяет. На чтение - пофиг (если только оно извне кем-то не меняется)


RWolf   (2011-01-18 09:47:00) [3]

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


И. Павел   (2011-01-18 08:46:00) [4]

> Мне бы узнать как будут работать два потока  при вызове
> одной и той же процедуры. Будут созданы две копии процедуры
> для каждого потока или потоки будут работать с одной процедурой
> одновременно?

Ну локальные переменные будут разные (если вы это имеете ввиду) а глобальные - одни. Так что если процедура использует какие-то глобальные (разделяемые обоими потоками) объекты, нужно использовать синхронизацию, так чтобы два потока могли использовать процедуру только по очереди.


Наверх

Титульная страница Поиск, карта сайта Написать письмо