#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;
}