[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
>>как авторы написав на С - могли гарантировать что компилятор >>воспользуется именно такой инструкцией?
>>применяя инструкцию типа LOCK_READ_MODIFY - они специально написали >>на псевдо(?)ассемблере
Они не писали на С. Все описанные алгоритмы (кроме Пеиерсона) относятся к концу 60-х годов, тогда о С знали только его авторы. В литературе то начала 80-х алгоритмы приводятся чаще всего на Алголе или Паскале. Приводить алгоитмы С - мода 90-х.
Это фактически математические алгоритмы с соответсвующим подходом: допустим, что существует такая неделимая операция и т.д.
---------------
>> подумали - тоже предложили несколько вариантов
>> например
две ячейки #1 и #2 - читающий запоминает ячейку #1 в локальной памяти и читает shared потом сверяет значения #1 и #2 и если равны то ОК иначе повторяет
пишущий инкрементирует #2 затем пишет в shared затем инкрементирует #1
>>
По моему это один из вариантов обмена сообщениями, только надо учесть, что ячейки могут быть многобайтовыми и в большинстве случаев будет меняться только один младший байт. В таком случае, IMXO, лучше все-таки страховаться CRC или его аналогом, и запись начинать с его разрушения.
E-mail: info@telesys.ru