Возвращаясь к недавней теме. Нужно решить одну из самых сложных проблем в программировании: выбрать хорошее название для идентификатора :) В данном случае название самого верхнего пространства имен для маленького проекта, в котором будут собраны самодельные реализации спинлоков (с использованием только средств из стандартной библиотеки C++11).
Пока лучшее, что удалось придумать -- это cppinlocks.
Другой вариант, который, правда, нравится меньше, cppspins.
В общем, очень нужна помощь общественности :)
Upd. По итогам прений ;) библиотека пока живет под именем spinlockspp.
PS. Сейчас код spinlock-ов лежит внутри кода SObjectizer. Нужно выделить его в отдельный подпроект. Но не столько для того, чтобы развивать дальше (я так понял, что в случае spinlock-ов каждый сам себе велосипедит, кто во что горазд). А для того, чтобы тесты spinlock-ов не приходилось гонять при полном билде SObjectizer. Ну и чтобы можно было где-то отдельно разместить бенчмарки. Кстати говоря, кто-нибудь может указать на готовые бенчмарки для примитивов синхронизации, которые можно заточить под себя?
PPS. Много положительных эмоций получил от обсуждения темы нужности такой библиотеки на LOR-е. Узнал про себя много интересного, анонимные тимлиды-эксперты жгут напалмом :) Полезный сухой остаток: указали на мой просчет в реализации простого спинлока. Вместо более эффективного алгоритма test-test-and-set у меня был задействован test-and-set. Тут явное следствие моей некомпетентности. Скопипастил кусок из документации к std::atomic_flag. Хотя на алгоритм ttas, как выяснилось, мне в свое время указывали. Но почему-то я не переделал реализацию spinlock_t на более оптимальную. Переделаю уже в cppinlocks.
Комментариев нет:
Отправить комментарий