![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Два потока и общая процедура
начинающий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]> Мне бы узнать как будут работать два потока при вызове
> одной и той же процедуры. Будут созданы две копии процедуры
> для каждого потока или потоки будут работать с одной процедурой
> одновременно?
Ну локальные переменные будут разные (если вы это имеете ввиду) а глобальные - одни. Так что если процедура использует какие-то глобальные (разделяемые обоими потоками) объекты, нужно использовать синхронизацию, так чтобы два потока могли использовать процедуру только по очереди.