Доклад

Объединяем алгоритмы mutex и refcount для динамических объектов в общей памяти

  • На русском языке

Привычные концепции удобны для общения и понимания чужого кода, но что если они не всегда являются самым оптимальным решением? Например, если у вас много объектов, время жизни которых управляется через reference counter, а доступ к ним через лок. Можно ли сделать что-то оптимальнее? Да! Можно сократить несколько RMW операций, снизив оверхеды, а еще можно подключить сек-лок, тем самым повысив масштабируемость операций чтения.

Я представляю объединенную концепцию, которую можно назвать Lifex (LiFe-time management & mutual EXclusive sycnhronization), где мьютекс объединяется со счетчиком ссылок и счетчиком версий. Это порождает совершенно новый объект синхронизации со своими особыми свойствами. Расскажу, какую производительность можно увидеть на микробенчмарках и как я отлаживал алгоритм синхронизации с помощью техники thread fuzzing. 

Расписание