System::Threading::Thread class

Thread class

Thread implementation. Objects of this class should only be allocated using System::MakeObject() function. Never create instance of this type on stack or using operator new, as it will result in runtime errors and/or assertion faults. Always wrap this class into System::SmartPtr pointer and use this pointer to pass it to functions as argument.

class Thread : public System::Object

Methods

MethodDescription
Abort()Aborts thread. Not implemented.
get_CurrentCulture()Gets thread culture.
static get_CurrentThread()Gets object which describes current thread.
get_CurrentUICulture()Gets user interface culture used by thread.
get_IsAlive()Checks whether thread is alive.
get_IsBackground()Checks whether thread is background.
get_IsThreadPoolThread()Checks if thread is owned by a thread pool.
get_ManagedThreadId() constGets identifier of thread. Can be got from OS, but if OS thread identifier exceeds int limits, ids of threads can intersect.
get_Name()Gets thread name.
get_ThreadState()Gets thread state.
static GetCurrentThreadId()Gets identifier of current thread.
GetHashCode() const override
Interrupt()Interrupt thread. Not implemented.
Join()Joins managed thread. Performs unlimited waiting if required.
Join(int)Joins managed thread. Performs limited waiting.
Join(TimeSpan)Joins managed thread. Performs limited waiting.
static MemoryBarrier()Synchronizes memory access.
operator=(const Thread&)Copies TLS data from different thread.
set_CurrentCulture(const SharedPtr<Globalization::CultureInfo>&)Sets thread culture.
set_CurrentUICulture(const SharedPtr<Globalization::CultureInfo>&)Sets user interface culture used by thread.
set_IsBackground(bool)Sets thread to background or foreground.
set_Name(const System::String&)Sets thread name.
static Sleep(int)Stops current thread for specified timeout.
static Sleep(TimeSpan)Stops current thread for specified timeout.
static SpinWait(int)Waits for specific number of loop iterations.
Start()Starts thread using null argument object.
Start(const System::SharedPtr<System::Object>&)Starts thread.
Thread()Constructor.
Thread(ThreadStart)Constructor.
Thread(ParameterizedThreadStart)Constructor.
Thread(Thread&)Copy constructor.
static Yield()Yields thread.
virtual ~Thread()Destructor.

Remarks

#include "system/threading/thread.h"
#include "system/smart_ptr.h"

int main()
{
  auto thread = System::MakeObject<System::Threading::Thread>([]()
  {
    std::cout << "Child thread ID: " << System::Threading::Thread::GetCurrentThreadId() << std::endl;
    System::Threading::Thread::Sleep(200);
  });

  std::cout << "Main thread ID: " << System::Threading::Thread::GetCurrentThreadId() << std::endl;

  thread->Start();
  thread->Join();

  return 0;
}
/*
This code example produces the following output:
Main thread ID: 2
Child thread ID: 1
*/

See Also