🐸 Подборка вакансий для C++-разработчиков за неделю
C developer — Удалёнка
Middle+ / Senior C++ developer — Удалёнка
Senior разработчик C++ в команду Core — Удалёнка
Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 ₽ Удалёнка
Библиотека C/C++ разработчика
C developer — Удалёнка
Middle+ / Senior C++ developer — Удалёнка
Senior разработчик C++ в команду Core — Удалёнка
Middle Разработчик на C/C++ под Linux — от 250 000 и до 300 000 ₽ Удалёнка
Библиотека C/C++ разработчика
👍3
Часто в коде встречаются избыточные проверки, которые защищают от "невозможных" ситуаций:
void process(Config* config) {
if (config == nullptr) { // хотя config всегда валиден!
log_error("Config is null");
return;
}
// ...
}assert для проверки инвариантов — условий, которые всегда должны выполняться в корректной программе:void process(Config* config) {
assert(config != nullptr && "Config cannot be null");
// ...
}• В релизе (NDEBUG) код assert полностью удаляется — нет накладных расходов
• В горячих циклах это может означать миллионы сэкономленных проверок
• Меньше размер исполняемого файла
• assert явно документирует предусловия функции
• Баг обнаруживается сразу в
Debug, а не прячется за логами👉 Статья
Библиотека C/C++ разработчика
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔2❤1🥱1👾1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🎮 Плейлист с решением задач с Leetcode
Для тех, кто готовится к собеседованиям и хочет прокачать алгоритмическое мышление на C++: отличная подборка — плейлист «Blind 75 C++ Leetcode» с подробными пошаговыми разбором задач. Автор разбирает каждую из самых популярных задач LeetCode с фокусом на реальные паттерны, сложности и подводные камни интервью.
👉 Плейлист
Библиотека C/C++ разработчика
#линкер_рекомендует
Для тех, кто готовится к собеседованиям и хочет прокачать алгоритмическое мышление на C++: отличная подборка — плейлист «Blind 75 C++ Leetcode» с подробными пошаговыми разбором задач. Автор разбирает каждую из самых популярных задач LeetCode с фокусом на реальные паттерны, сложности и подводные камни интервью.
👉 Плейлист
Библиотека C/C++ разработчика
#линкер_рекомендует
👍4❤2
🧠 Когда mutex — не панацея
Многопоточное программирование в C++ часто сводится к простой мантре: «Есть shared data — добавь mutex». Но реальность куда интереснее, и правильная синхронизация требует понимания нюансов.
Современный C++ предлагает богатый арсенал примитивов синхронизации. std::mutex решает базовые задачи, но для специфичных сценариев есть более эффективные инструменты.
Ключевой момент — гранулярность блокировок. Слишком крупные критические секции убивают параллелизм, слишком мелкие создают оверхед. В high-performance системах часто используют lock-free структуры данных или hybrid подходы: например, thread-local буферы с периодической синхронизацией через lock.
Не стоит забывать про
А как вы подходите к выбору механизма синхронизации? Полагаетесь на универсальный mutex или анализируете паттерны доступа к данным?
Библиотека C/C++ разработчика
#междусобойчик
Многопоточное программирование в C++ часто сводится к простой мантре: «Есть shared data — добавь mutex». Но реальность куда интереснее, и правильная синхронизация требует понимания нюансов.
Современный C++ предлагает богатый арсенал примитивов синхронизации. std::mutex решает базовые задачи, но для специфичных сценариев есть более эффективные инструменты.
std::shared_mutex (C++17) идеален для ситуаций с частым чтением и редкой записью — классический reader-writer lock. std::atomic обеспечивает lock-free синхронизацию для простых типов, но требует понимания memory ordering.Ключевой момент — гранулярность блокировок. Слишком крупные критические секции убивают параллелизм, слишком мелкие создают оверхед. В high-performance системах часто используют lock-free структуры данных или hybrid подходы: например, thread-local буферы с периодической синхронизацией через lock.
Не стоит забывать про
std::condition_variable для координации потоков и std::latch/std::barrier (C++20) для более сложных паттернов синхронизации. Правильный выбор примитива может дать разницу в производительности на порядок.А как вы подходите к выбору механизма синхронизации? Полагаетесь на универсальный mutex или анализируете паттерны доступа к данным?
Библиотека C/C++ разработчика
#междусобойчик