![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по потокам [D7, WinXP]
Русланка © (2005-09-01 15:48:00)Если у меня в главном модуле объявлены глобальные переменные, то сможет ли запущенный отдельный поток писать и читать данные из этих переменных?
Alexander Panov (2005-09-02 11:45:00) [81]Руслан (02.09.05 11:08) [7]
Жду аргументов с вашей стороны.
Аргументов чего?
Прочитай внимательно свой пост [5] и попытаяся высянить без Рихтера, что в нем написано.
Руслан (02.09.05 9:04) [5]
Но на всякий случай используй критические секции как обрамление при записи глобальныхм переменных...
Не надо использовать критические секции "на всякий случай".
Без четкого понимания того, что происходит при работе с данными из нескольких потоков, это не имеет смысла.
Использовать функции синхронизации надо не только при записи, но и при чтении тех данных, обращение к которым происходит из нескольких потоков.
Синхронизация - защита участка кодапрограммы(не данных), использующего(читающего или модифицирующего) некий ресурс, обращение к которому происходит из нескольких потоков.
Синхронизация возможна многими способами.
Наиболее применяемый - критические секции.
для применения критических секций должны выполняться условия:
1. Код, использующий разные ресурсы, защищается разными критическими секциями
2. Код в каждом потоке, использующий один и тот же ресурс, защищается одной и той же критической секцией. Эта критическая секция должна быть известна каждому потоку до начала использования.
3. Для того, чтобы обеспечить гарантированное освобождение ресурса после использования, необходимо применять конструкцию вида
try
CS.Enter;
finally
CS.Leave;
end;
vidiv (2005-09-02 11:23:00) [82]А ктонибудь может привести пример синхронизации на вин-апи?
Руслан (2005-09-02 11:08:00) [83]Alexander Panov © (02.09.05 09:49) [6]
Поясните мысль ?
Свой ответ я постил держа перед собой:
Чарльз Калверт "Delphi 4 Unleashed"
Часть II
Глава 7 "Мультизадачность и потоки"
"Критические разделы: Как заставить потоки работать вместе"
Жду аргументов с вашей стороны.
Alexander Panov (2005-09-02 09:49:00) [84]Руслан (02.09.05 9:04) [5]
Не стоит постить неоформившиеся мысли.
Руслан (2005-09-02 09:04:00) [85]Но на всякий случай используй критические секции как обрамление при записи глобальныхм переменных...
Русланка (2005-09-01 17:41:00) [86]Спасибо, поняла!
begin...end (2005-09-01 15:58:00) [87]> Русланка (01.09.05 15:48)
The thread function and any of the routines it calls have their own local variables, just like any other Dephi language routines. These routines also can access any global variables.In fact, global variables provide a powerful mechanism for communicating between threads.
Evgeny V (2005-09-01 15:57:00) [88]Может. Думаю (пытаюсь угадать точнее:-)), так как не знаю вашей задачи) вам пондабится так же и синхронизировать доступ к общим переменным,если это так, то обратите на это внимание.
Игорь Шевченко (2005-09-01 15:55:00) [89]Сможет