ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 июля
1434889 Топик полностью
AlexBi (13.05.2024 18:22, просмотров: 93) ответил SciFi на Но зачем, Холмс? :-)
Предложите, как сделать обновление двух переменных, без использования отдельного флага "занято". Там вложенность так и просится 
void atomic_xor(uint32_t *ptr1, uint32_t *ptr2)
{
    uint32_t temp1, temp2;
    do {
        temp1 = __LDREX(ptr1);
        temp2 = __LDREX(ptr2);
        temp1 ^= 0xff;
        temp2 ^= 0xff;
    } while (__STREX(temp2, ptr2) || __STREX(temp1, ptr1));
}