Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Остановить процесс вычисления, По нажатию кнопки 
:(
    Опции темы
Alexeis
Дата 27.3.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



_hunter, прав если предварительно значение не считывать, то будет все в порядке.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bems
Дата 27.3.2006, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(_hunter @ 27.3.2006, 12:54 Найти цитируемый пост)
это если два потока пишут а один читает
а на двух процах?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
_hunter
Дата 27.3.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



если ресур общий ( а память -- общая ) всеравно.
вот если на двух компах... smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Демо
Дата 27.3.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(_hunter @ 27.3.2006, 15:04 Найти цитируемый пост)
если ресур общий ( а память -- общая ) всеравно.


Не все равно.

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

Простая ситуация: 2 потока, обрабатыва.щие однц и ту же строку:

Последовательная обработка, когда потоки работают последовательно:

Первый поток записывает в строку: CommonStr := '1234567890';
Первый поток читает строку и обрабатывает ее; //Строка '1234567890'
Второй поток записывает в строку: CommonStr := 'abcefghij';
Второй поток читает строку и обрабатывает ее; //Строка 'abcefghij'

Параллельная обработка:

Первый поток записывает в строку: CommonStr := '1234567890';
//Первый поток успевает записать только '123'
Второй поток записывает в строку: CommonStr := 'abcefghij';
//Второй поток успевает записать всю строку
Первый поток продолжает записывать оставшуюся часть строки '4567890'
Первый поток читает строку и обрабатывает ее; //Строка 'abc4567890'
Второй поток читает строку и обрабатывает ее; //Строка 'abc4567890'

Это всего лишь схематично. На самом деле все намного сложнее.




--------------------
    
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 27.3.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата

Первый поток читает строку и обрабатывает ее; //Строка '1234567890'

Цитата

Второй поток читает строку и обрабатывает ее; //Строка 'abcefghi

вопрос звучал не читать, а только писать smile
читать может только третий smile


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
_hunter
Дата 27.3.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



читать нужно было так:
если ресур общий всеравно будет затык.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Демо
Дата 27.3.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(alexeis1 @ 27.3.2006, 15:39 Найти цитируемый пост)
читать может только третий


И в результате прочитает полную чушь.

В общем, процесс синхронизации необходим всегда, за исключеним работы с типом Byte и Boolean.


--------------------
    
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 27.3.2006, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата

В общем, процесс синхронизации необходим всегда, за исключеним работы с типом Byte и Boolean.

а так же word, DWord, extended.

mov [....], eax

mov [....], ax

mov [....], al

одна команда smile

Цитата

И в результате прочитает полную чушь.

иногда может оказаться что и так сойдет(правда редко) smile
шучу, конечно smile

а вообще если record писать то и в правду нельзя

Это сообщение отредактировал(а) alexeis1 - 27.3.2006, 16:20


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 27.3.2006, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(alexeis1 @ 27.3.2006, 16:11 Найти цитируемый пост)
а так же word, DWord, extended.


А так? -
Код

  DW,DW1: DWORD;
begin
  DW := 123123123;
  DW1 := DW-1;  // DW1 - общий ресурс



С Integer и Extended еще хуже.

Это сообщение отредактировал(а) Демо - 27.3.2006, 16:33


--------------------
    
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 29.3.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Демо, integer, Cardinal, LongWord, DWord - для процессора - это один и тот же тип. Для записи значения из регистра в память используется одна машинная команда ( которую никто не может прервать).
ее аналог в ассемблере
mov DW1, eax (ebx, ecx...)
таким образом запись в память производится за один такт.
c Extended - работает сопроцессор
Extended - это также атомарный тип также будет обрабатываться за такт.



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 29.3.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



alexeis1,

Посмотри, какой код получается сначала.

Все типы, кроме однобайтовых, необходимо защищать.


--------------------
    
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 29.3.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата

DW1 := DW-1;

чем хуже smile Будет правельно.
Добавлено @ 11:51
Демо, покажи ассемблерный код которыу получится


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Демо
Дата 29.3.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



alexeis1,

Код

DW1 := DW-1;


Код

  mov ebx,eax
  dec ebx 


2 команды. Или я что-то не понял?


--------------------
    
PM MAIL ICQ Skype   Вверх
Guedda
Дата 29.3.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Хм... А если просто:
Код

dec eax



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Демо
Дата 29.3.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Guedda,
Ну мы же не на ассемблере пишем;)

PS.
Ошибки при обновлении переменных возникнут при переключении контекстов потоков планировщиком в то время, когда поток обновляет переменную, а она может быть доступна другим потокам, или когда выполняются одновременно два потока на различных процессорах

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

- Загрузить значение из переменной экземпляра в регистр.
- Увеличить или уменьшить значение.
- Сохранить значение в переменной экземпляра.

Если не использовать методы синхронизации, поток может быть прерван после выполнения первых двух шагов. Затем другой поток может выполнить все три шага. Когда первый поток продолжит выполнение, он переписывает значение в переменную экземпляра, и эффект увеличения или уменьшения значения, выполненного вторым потоком, теряется.


--------------------
    
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0648 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.