🐾 Почему std::this_thread::sleep_for не гарантирует точную паузу?
Если думал, что
Когда ты вызываешь
⚡️ На Linux гранулярность таймера по умолчанию — около 1–4 мс (зависит от CONFIG_HZ). На Windows — исторически 15.6 мс, если не вызвать timeBeginPeriod(1)
💡 Если нужна точность ниже миллисекунды — ОС-пауза не подойдёт. Для таких задач используют spin-wait с
🐸 Учитывай это при реализации любого setPause-подобного механизма в
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Если думал, что
sleep_for(100ms) остановит поток ровно на 100 мс, то это не так. На деле — это минимальное время ожидания, не точное.Когда ты вызываешь
std::this_thread::sleep_for, происходит следующее: поток переводится в состояние WAITING в планировщике ОС. Ядро ставит таймер и убирает поток из очереди на исполнение. Когда таймер срабатывает, поток не просыпается мгновенно — он попадает обратно в ready queue и ждёт, пока планировщик выделит ему квант времени.auto start = std::chrono::steady_clock::now();
std::this_thread::sleep_for(std::chrono::milliseconds(100));
auto elapsed = std::chrono::steady_clock::now() - start;
// elapsed может быть 102ms, 115ms, даже 130ms
⚡️ На Linux гранулярность таймера по умолчанию — около 1–4 мс (зависит от CONFIG_HZ). На Windows — исторически 15.6 мс, если не вызвать timeBeginPeriod(1)
💡 Если нужна точность ниже миллисекунды — ОС-пауза не подойдёт. Для таких задач используют spin-wait с
std::chrono::high_resolution_clock, жертвуя CPU ради точности.🐸 Учитывай это при реализации любого setPause-подобного механизма в
game loop или real-time системах.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
👍8
Основная компетенция специалиста по Data Science – способность анализировать и интерпретировать данные, а математика является фундаментом для начала работы.
В карточках мы разбираем основные разделы математики, с которых стоит начать изучение специалисту по анализу данных.
Хотите подготовиться к офферу или подтянуть знания? Оставляйте заявку на наш курс по математике для Data Science 💙
P.S. Только до 31 мая на курс (и вообще на все программы Академии) действует
А как у вас дела с высшей математикой?
❤️ — Помню всё
🔥 — Знаю основы
🌚 — Ничего не знаю
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4😁4👍3🥱2
🐸 Подборка вакансий для C++-разработчиков за неделю
Unreal engine/С++ developer (gamedev) —Удалёнка
C Developer (VoIP / Telecommunications) — Удалёнка
Разработчик C++ (Middle) —Офис (Москва)
Архитектор ПО (C++ разработчик) — Команда разработки EPC (MME, S-GW, P-GW)
C++ red team developer — от 230 000 и до 350 000 ₽ Гибрид (Санкт-Петербург)
Senior/Middle C/C++ Developer (System Programming / Embedded) — от 200 000 ₽ Удалёнка
Ведущий разработчик С++ — от 250 000 и до 350 000 ₽ Офис/гибрид (Москва)
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
Unreal engine/С++ developer (gamedev) —Удалёнка
C Developer (VoIP / Telecommunications) — Удалёнка
Разработчик C++ (Middle) —Офис (Москва)
Архитектор ПО (C++ разработчик) — Команда разработки EPC (MME, S-GW, P-GW)
C++ red team developer — от 230 000 и до 350 000 ₽ Гибрид (Санкт-Петербург)
Senior/Middle C/C++ Developer (System Programming / Embedded) — от 200 000 ₽ Удалёнка
Ведущий разработчик С++ — от 250 000 и до 350 000 ₽ Офис/гибрид (Москва)
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#вакансии
😁2❤1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Проведи ревью кода и найди проблему (если она есть😉).
#include <mutex>
#include <thread>
#include <vector>
#include <iostream>
std::mutex mtx;
std::vector<int> data;
void producer() {
for (int i = 0; i < 100; ++i) {
std::lock_guard<std::mutex> lock(mtx);
data.push_back(i);
}
}
void consumer() {
while (true) {
std::lock_guard<std::mutex> lock(mtx);
if (data.empty()) {
// Ждём данные...
std::this_thread::sleep_for(
std::chrono::milliseconds(10));
continue;
}
std::cout << data.back() << "\n";
data.pop_back();
}
}
Вопрос: что не так с
consumer()? Почему lock_guard здесь — плохой выбор и как это исправить?📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2🥱2❤1
📰 Свеженькое из мира C++
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• 7 игр сделанных на Unigine Engine — на Unigine Engine всё же пишут игры
• Хочешь работать на зарубежную компанию из России? — советы по поиску работы за рубежом
• Почему std::this_thread::sleep_for не гарантирует точную паузу? — разбираемся почему
📙 Ranges:
• Вложенные диапазоны: views::join и views::join_with
• Ranges: другие полезные адаптеры
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.
😎 Интересное:
• 7 игр сделанных на Unigine Engine — на Unigine Engine всё же пишут игры
• Хочешь работать на зарубежную компанию из России? — советы по поиску работы за рубежом
• Почему std::this_thread::sleep_for не гарантирует точную паузу? — разбираемся почему
sleep_for(100ms) это гарантия минимального времени ожидания, но не точного📙 Ranges:
• Вложенные диапазоны: views::join и views::join_with
• Ranges: другие полезные адаптеры
🔹📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#свежак
👍1