Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
5
Отображение идентификаторов и счётчиков из разных потоков
Условие задачи
Опишите и разберите поведение следующей программы, использующей стандартную библиотеку C++ для создания и управления потоками.
void worker() {
constexpr uint8_t SIZE = 10u;
for (uint8_t i = 0u; i < SIZE; ++i) {
std::cout << std::this_thread::get_id() << " => " << i << std::endl;
}
}
int main(int argc, char** argv) {
std::thread t1(worker);
std::thread t2(worker);
if (t1.joinable()) {
t1.join();
}
if (t2.joinable()) {
t2.join();
}
return EXIT_SUCCESS;
}
В ответе объясните, как происходит вывод из двух одновременно работающих потоков, почему используется joinable() и join(), а также какое влияние может оказывать планировщик потоков на порядок печати.