• Авторизация


Приплюснул 15-05-2007 17:07 к комментариям - к полной версии - понравилось!


Обобщенное высокоуровневое программирование используя шаблоны + низкоуровневый код на ассемблере. Жуткая смесь.

Оператор функтора производит малозатратный (10-50 раз быстрее классических мьютексов) контроль блокировки по условию с учетом многопроцессорной платформы (для семейства x86) и возвращает интеллектуальный указатель на гарантированно свободного контент-провайдера (в данном случае по совместительству еще и абстрактной фабрики классов) от переданной пары ключ-значение из любого именованного контейнера.

template
<
   
typename MessageApplicator,
    typename Value
>
typename MessageApplicator::template
    container_lock_wrapper<ContentProvider<Value> >
operator()(
const std::pair<MessageApplicator, Value>& pair)
{
    int* pw(&pair.first.index());
    asm
    {
        mov esi, [pw]
        mov eax, dword ptr [esi]
    L0:
        test eax, eax
        je L1
        mov ebx, eax
        inc ebx
        lock cmpxchg dword ptr [esi], ebx
        jne L0
    L1:
    }
    return ContentProvider<Value>(pair.second);
}

Конечно, пример я придумал чисто для прикола. Но контраст выглядит настолько сильно, что смотреть без гордости за С++ нет возможности =)
вверх^ к полной версии понравилось! в evernote
Комментарии (3):
Such_A_Good_Guy 17-05-2007-16:40 удалить
Твой "прикольный" пример может привести к короткому замыканию транзисторов мозга читателя :)
teal 17-05-2007-17:22 удалить
Естественно, программа же для x86, а не для чего-то еще. А что, замкнуло, да? На какой строчке? =)
Such_A_Good_Guy 22-05-2007-15:58 удалить
На первой: "Обобщенное высокоуровневое программирование..."


Комментарии (3): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Приплюснул | teal - Теалятина | Лента друзей teal / Полная версия Добавить в друзья Страницы: раньше»