РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
764 of 815 menu

Метод detach

Метод detach класса thread отсоединяет поток выполнения от объекта thread. После вызова этого метода объект thread перестает быть связанным с потоком выполнения, и поток продолжает выполняться независимо. Метод не принимает параметров и не возвращает значения. После отсоединения объект thread становится неприсоединяемым (joinable возвращает false), и при его разрушении не происходит завершение потока.

Синтаксис

thread.detach()

Пример

Давайте создадим поток, отсоединим его с помощью метода detach и позволим ему выполняться независимо:

#include <iostream> #include <thread> using namespace std; void func() { cout << "Thread is running" << endl; } int main() { thread t(func); t.detach(); cout << "Main thread continues" << endl; this_thread::sleep_for(chrono::milliseconds(100)); return 0; }

Результат выполнения кода:

"Thread is running" "Main thread continues"

Пример

Давайте проверим состояние потока до и после вызова метода detach с помощью метода joinable:

#include <iostream> #include <thread> using namespace std; void func() { cout << "Thread executed" << endl; } int main() { thread t(func); cout << "Before detach: " << t.joinable() << endl; t.detach(); cout << "After detach: " << t.joinable() << endl; this_thread::sleep_for(chrono::milliseconds(100)); return 0; }

Результат выполнения кода:

"Before detach: 1" "After detach: 0" "Thread executed"

Пример

Давайте отсоединим несколько потоков и позволим им выполняться параллельно:

#include <iostream> #include <thread> using namespace std; void print(int num) { cout << "Thread " << num << endl; } int main() { thread t1(print, 1); thread t2(print, 2); t1.detach(); t2.detach(); cout << "Main thread" << endl; this_thread::sleep_for(chrono::milliseconds(100)); return 0; }

Результат выполнения кода:

"Main thread" "Thread 1" "Thread 2"

Смотрите также

  • класс thread,
    который представляет поток выполнения
  • метод join,
    который ожидает завершения потока
  • метод joinable,
    который проверяет возможность присоединения потока
  • метод get_id,
    который возвращает идентификатор потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить