Приплюснул
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