Загрузка данных


#include <iostream>
#include <thread>
#include <chrono>
#include <vector>
#include <cstdlib>
#include <ctime>

void worker(int id) {
    std::cout << "Поток " << id << " начал работу\n";
    int seconds = rand() % 5 + 1;
    std::this_thread::sleep_for(std::chrono::seconds(seconds));
    std::cout << "Поток " << id << " завершил работу через " << seconds << " секунд\n";
}

int main() {
    srand(time(nullptr));

    std::vector<std::thread> threads;

    for (int i = 1; i <= 5; ++i) {
        threads.push_back(std::thread(worker, i));
    }

    std::string message = "Привет из главного потока!";
    std::thread special_thread([message](std::string msg) {
        std::cout << "Специальный поток получил: " << msg << "\n";
        std::this_thread::sleep_for(std::chrono::seconds(3));
        std::cout << "Специальный поток завершил работу\n";
    }, message);

    threads.push_back(std::move(special_thread));
    

    for (auto& t : threads) {
        if (t.joinable()) {
            t.join();
        }
    }
    
    std::cout << "Главный поток завершён!\n";
    
    return 0;
}