Pull to refresh
132
0
Дулин Марат@mdevils

FullStack Software Developer

Send message
И, между прочим, в FreePascal есть инструкцияя asm, которой не так уж и сложно пользоваться. И результат вполне кроссплатформенен (используется особый диалект ASM).
Спасибо, я как раз сейчас переделываю локинг именно на такой вариант. Данные для чтения всегда доступны. А писать может только один.
Есть неплохие lock-free лагоритмы основанные на CAS. Я как раз сейчас исследую это направление.
У вас интересные мысли. Не хотите присоединиться к проекту?
Не основные. Главное — чтение и запись напрямую. Но в то же время не хочется чтобы из-за этих команд что-то сильно тормозило.
Сколько займет парсинг я считать не буду =) Текстовый протокол вскоре будет заменен на бинарный. А прием/отправка реализованы сейчас почти напрямую через сокеты ОС.
Ключ может содержать в себе любые символы, в том числе и \r\n. Точно также и значение.
Зачем нужны кеширующие серверы можно почитать здесь: ru.wikipedia.org/wiki/Memcached
Я имею ввиду, что помимо операции присвоения значения по ключу, нужна еще операция добавления к значению. Она должна выглядеть как атомарная для сервера.
Вот про то что не войдет — это плохо. Представь сервер кеша на посещаемом сайте. Сонти запросов в секунду для популярных ключей. Все потоки должны иметь возможность читать одновременно данные.
Проблема с APPEND/INC актуальна так же и для хештаблицы. Лочить надо. Я выбрал пока бинарное дерево для хэштаблицы (минимум памяти при приемлемой скорости). Непонятно что лочить при удалении, например. В бинарном дереве удаление не очень-то и простая команда.
Прочитал mutex, там 0, пишущий поток решил что ему можно писать) Сразу после того как первый прочитал, второй поток тоже прочитал 0, тоже решил что ему можно писать. Оба стали писать, поставив единичку)

А так, не только в этом проблема. Непонятно что лочить при удалении, например. В бинарном дереве удаление не очень-то и простая команда.
Не совсем. Во-первых колизии (и связанный список из-за них). Во-вторых команды APPEND, INC.
И именно поэтому сделали бинарный протокол недавно
Хорошая идея, добавил таск github.com/mdevils/encached/issues/#issue/3
Там баг в 2.2.4 как раз, про сигналы.
Добавлю эту информацию в пост.
HTTP избыточен, его разбор займет время. А тут важна скорость.
Каждый поток имеет свою очередь сообщений и может корректно выключиться как только его попросит менеджер потоков.
То есть тут какая штука. Либо создавать огромную таблицу, тратить память на нее и иметь мало колизий, либо мелкую таблицу, скорость которой в итоге может быть меньше бинарного дерева.
Такая таблица очень маленькая на мой взгляд, будет много колизий и оттуда много цепочек. При 10млн элементов максимальная глубина дерева была 52, md5 очень крутой.

Information

Rating
Does not participate
Location
Berlin, Berlin, Германия
Date of birth
Registered
Activity