[an error occurred while processing this directive] [an error occurred while processing this directive]
2 yes
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Sdl 21 января 2002 г. 11:53

>>как авторы написав на С - могли гарантировать что компилятор >>воспользуется именно такой инструкцией?
>>применяя инструкцию типа LOCK_READ_MODIFY - они специально написали >>на псевдо(?)ассемблере

Они не писали на С. Все описанные алгоритмы (кроме Пеиерсона) относятся к концу 60-х годов, тогда о С знали только его авторы. В литературе то начала 80-х алгоритмы приводятся чаще всего на Алголе или Паскале. Приводить алгоитмы С - мода 90-х.
Это фактически математические алгоритмы с соответсвующим подходом: допустим, что существует такая неделимая операция и т.д.

---------------

>> подумали - тоже предложили несколько вариантов
>> например
две ячейки #1 и #2 - читающий запоминает ячейку #1 в локальной памяти и читает shared потом сверяет значения #1 и #2 и если равны то ОК иначе повторяет
пишущий инкрементирует #2 затем пишет в shared затем инкрементирует #1
>>

По моему это один из вариантов обмена сообщениями, только надо учесть, что ячейки могут быть многобайтовыми и в большинстве случаев будет меняться только один младший байт. В таком случае, IMXO, лучше все-таки страховаться CRC или его аналогом, и запись начинать с его разрушения.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru