❤7👍6🔥5
Останавливаем потоки безопасно с std::jthread
Сейчас научимся правильно завершать потоки в C++. Без
Для начала подключим библиотеки. Чтобы код был короче, добавим using namespace std:
Теперь напишем рабочую функцию. Она будет печатать счётчик каждую секунду. Когда придёт сигнал остановки, поток завершится сам:
Запускаем поток через
Вот что выведет программа:
🔥 Таким образом ты можешь писать потоки проще — с автоматическим управлением и встроенной остановкой.
📣 C++ Ready | #практика
Сейчас научимся правильно завершать потоки в C++. Без
detach, без ручного join, без флагов. Для начала подключим библиотеки. Чтобы код был короче, добавим using namespace std:
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
Теперь напишем рабочую функцию. Она будет печатать счётчик каждую секунду. Когда придёт сигнал остановки, поток завершится сам:
void worker(stop_token st) {
int tick = 0;
while (!st.stop_requested()) {
cout << "Tick " << tick++ << '\n';
this_thread::sleep_for(chrono::seconds(1));}
cout << "Поток завершён корректно.\n";
}Запускаем поток через
jthread. Ждём немного и просим его остановиться. Никаких join() вызывать не нужно — всё делается автоматически:int main() {
jthread t(worker);
this_thread::sleep_for(chrono::seconds(3));
t.request_stop();
}Вот что выведет программа:
Tick 0
Tick 1
Tick 2
Поток завершён корректно.
🔥 Таким образом ты можешь писать потоки проще — с автоматическим управлением и встроенной остановкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13🔥10👍8😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7❤6😁1
В этой задаче создаём консольную утилиту, которая переводит числовое значение из одной единицы измерения в другую прямо из терминала.
В этой задаче:
• Принимаем на вход 3 аргумента — число, исходную единицу и целевую единицу.
• Проверяем, что обе единицы входят в список поддерживаемых (m, cm, km, g, kg, l, ml).
• Используем unordered_map с коэффициентами и сначала переводим значение в базовую единицу, затем — в нужную.
Такой инструмент удобен, когда нужно быстро пересчитать метры в сантиметры, граммы в килограммы или литры в миллилитры, не покидая командную строку.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍7❤6🤝1
С его помощью можно легко получать расширение файла, имя без пути, родительский каталог, заменять расширение, а также работать с путём в системном формате. Полезно при создании утилит, обработке файлов и написании кроссплатформенного кода.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍9❤8🤝6