Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::thread::join

      From cppreference.com
      <cpp‎ |thread‎ |thread

      [edit template]
       
       
      Concurrency support library
      Threads
      (C++11)
      (C++20)
      this_thread namespace
      (C++11)
      (C++11)
      (C++11)
      Cooperative cancellation
      Mutual exclusion
      Generic lock management
      (C++11)
      (C++11)
      (C++11)
      (C++11)
      Condition variables
      (C++11)
      Semaphores
      Latches and Barriers
      (C++20)
      (C++20)
      Futures
      (C++11)
      (C++11)
      (C++11)
      Safe reclamation
      Hazard pointers
      Atomic types
      (C++11)
      (C++20)
      Initialization of atomic types
      (C++11)(deprecated in C++20)
      (C++11)(deprecated in C++20)
      Memory ordering
      (C++11)(deprecated in C++26)
      Free functions for atomic operations
      Free functions for atomic flags
       
       
      void join();
      (since C++11)

      Blocks the current thread until the thread identified by*this finishes its execution.

      The completion of the thread identified by*thissynchronizes with the corresponding successful return fromjoin().

      No synchronization is performed on*this itself. Concurrently callingjoin() on the same thread object from multiple threads constitutes a data race that results in undefined behavior.

      Contents

      [edit]Parameters

      (none)

      [edit]Return value

      (none)

      [edit]Postconditions

      joinable() isfalse.

      [edit]Exceptions

      std::system_error if an error occurs.

      [edit]Error conditions

      [edit]Example

      Run this code
      #include <chrono>#include <iostream>#include <thread> void foo(){// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(1));} void bar(){// simulate expensive operationstd::this_thread::sleep_for(std::chrono::seconds(1));} int main(){std::cout<<"starting first helper...\n";std::thread helper1(foo); std::cout<<"starting second helper...\n";std::thread helper2(bar); std::cout<<"waiting for helpers to finish..."<<std::endl;    helper1.join();    helper2.join(); std::cout<<"done!\n";}

      Output:

      starting first helper...starting second helper...waiting for helpers to finish...done!

      [edit]References

      • C++23 standard (ISO/IEC 14882:2024):
      • 33.4.3.6 Members [thread.thread.member]
      • C++20 standard (ISO/IEC 14882:2020):
      • 32.4.2.5 Members [thread.thread.member]
      • C++17 standard (ISO/IEC 14882:2017):
      • 33.3.2.5 thread members [thread.thread.member]
      • C++14 standard (ISO/IEC 14882:2014):
      • 30.3.1.5 thread members [thread.thread.member]
      • C++11 standard (ISO/IEC 14882:2011):
      • 30.3.1.5 thread members [thread.thread.member]

      [edit]See also

      permits the thread to execute independently from the thread handle
      (public member function)[edit]
      checks whether the thread is joinable, i.e. potentially running in parallel context
      (public member function)[edit]
      C documentation forthrd_join
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/thread/thread/join&oldid=129255"

      [8]ページ先頭

      ©2009-2025 Movatter.jp