![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по потокам [D7, WinXP]
Русланка © (2005-09-01 15:48:00)Если у меня в главном модуле объявлены глобальные переменные, то сможет ли запущенный отдельный поток писать и читать данные из этих переменных?
Lamer@fools.ua (2005-09-06 09:13:00) [41]>> Alexander Panov © (02.09.05 11:45) [9]
>try
CS.Enter;
finally
CS.Leave;
end;
Хороший пример того, как не надоделать. А надо так:
CS.Enter;
try
// ...
finally
CS.Leave;
end;
vidiv (2005-09-06 05:21:00) [42]
> 1. Код, использующий разные ресурсы, защищается разными
> критическими секциями
> 2. Код в каждом потоке, использующий один и тот же ресурс,
> защищается одной и той же критической секцией. Эта критическая
> секция должна быть известна каждому потоку до начала использования.
Можно пояснить эти два условия?!
Alexander Panov (2005-09-04 00:28:00) [43]Еще раз повторю...
Доступ к любому ресурсу возможен только "кем-то". Этот "кто-то" - кодовый поток, точнее - кусок этого кодового поока, в котором происходит обращение к ресурсу, т.е. вполне конкретный код.
Вот этот "кто-то" - это код, который необходимо включить в процесс синхронизации.
Можно назвать это защитой данных, суть от этого не изменится. Я считаю, что значительно понятнее для новичков будет суть процесса синхронизации, нежели игра словами.
Alexander Panov (2005-09-04 00:22:00) [44]Fay © (04.09.05 0:20) [44]
А вот такой ответ можно понимать вАщЕ как угодно.
А ты ответил на этот вопрос?
Alexander Panov (2005-09-04 00:21:00) [45]Fay © (04.09.05 0:19) [43]
Сравни 2 цитаты:
"Синхронизация - защита участка кода программы(не данных)"
и
> Синхронизация - защита участка кода программы(не
> данных), использующего(читающего или модифицирующего)
> некий ресурс, обращение к которому происходит из
> нескольких потоков.
Отличается. Верно ведь?
Fay (2005-09-04 00:20:00) [46]К [43]
> Вот здесь ответь, изменения кем или чем? Это и будет
> ответом.
А вот такой ответ можно понимать вАщЕ как угодно.
Fay (2005-09-04 00:19:00) [47]2 Alexander Panov © (03.09.05 23:59)
Нельзя ли тогда узнать, какой был контекст? Просто не могу ничего придумать.
Подобное уже встречалось в "Как приостановить поток" - какой там контекст?
Такой-же? КАКОЙ?!
> Синхронизация - защита участка кодапрограммы(не
> данных), использующего(читающего или модифицирующего)
> некий ресурс, обращение к которому происходит из
> нескольких потоков.
Подобная формулировка допускает разночтения? Не верю.
Alexander Panov (2005-09-04 00:01:00) [48]tesseract © (03.09.05 18:52) [40]
Я бы сказал что это защита данных от непредсказуемого изменения, в целом и fay не зря волнуется.
"..от непредсказуемого изменения..."
Вот здесь ответь, изменения кем или чем? Это и будет ответом.
"...fay не зря волнуется."
Читай [41]
Alexander Panov (2005-09-03 23:59:00) [49]Fay © (03.09.05 3:03) [39]
Выдирать фразу из контекста нехорошо. Это демагогические приемы.
Кроме того, вот эта фраза
Мастера, неужели это не бред?
Если нет, то это заoщита кода ОТ ЧЕГО?
А если бред, то где уже этот долбаный "синий карандаш"?!
говорит о том, что у тебя недостаточное понимание этой темы.
tesseract (2005-09-03 18:52:00) [50]>>Синхронизация - защита участка кода программы(не данных), >>использующего(читающего или модифицирующего) некий ресурс, >>обращение к которому происходит из нескольких потоков.
Я бы сказал что это защита данных от непредсказуемого изменения, в целом и fay не зря волнуется.
Fay (2005-09-03 03:03:00) [51]Я уже второй раз вижу заявление вида "Синхронизация - защита участка кода программы(не данных)" (оба раза автором был Alexander Panov).
Мастера, неужели это не бред?
Если нет, то это заoщита кода ОТ ЧЕГО?
А если бред, то где уже этот долбаный "синий карандаш"?!
Dok_3D (2005-09-03 00:07:00) [52]:)
Игорь Шевченко (2005-09-02 16:17:00) [53]Alexander Panov © (02.09.05 16:12) [34]
> Функция нерабочая?
А что подразумевается под "рабочей" функцией ?
Alexander Panov (2005-09-02 16:13:00) [54]Тогда заменим на такую и все.
function GetIniName: String;
begin
Result := ParamStr(0)+'ini';
end;
И мучиться не будем.
Alexander Panov (2005-09-02 16:12:00) [55]Игорь Шевченко © (02.09.05 16:11) [33]
В корзину такие функции.
Функция нерабочая?
begin...end (2005-09-02 16:12:00) [56]> Alexander Panov © (02.09.05 16:09) [31]
Это была удивительно информативная мысль.
Игорь Шевченко (2005-09-02 16:11:00) [57]Alexander Panov © (02.09.05 16:09) [31]
В корзину такие функции. Пользователю по барабану, что там программист понаписал, руководствуясь каким соображениями.
Alexander Panov (2005-09-02 16:10:00) [58]begin...end © (02.09.05 16:08) [30]
Кроме того, использование этой функции вообще не может повредить ничему(с учетом[24])
Alexander Panov (2005-09-02 16:09:00) [59]begin...end © (02.09.05 16:08) [30]
Говоря более простым языком, результат функции будет равен результату функции. Так?
Естественно, именно так.
begin...end (2005-09-02 16:08:00) [60]> Alexander Panov © (02.09.05 16:05) [28]
> Имя файла будет соответствовать тому, которое должно получиться
> в результате работы функции.
Говоря более простым языком, результат функции будет равен результату функции. Так?