   [.net] C++/CLI + native thread + GC
  As you know in .net application when garbage collection (GC) starts - all threads in application must be paused while GC is doing its work.But what will be in such situation: - we have .net application (written in C#); - we have Cpp/CLI assembly which is "glue" between managed & unmanaged code, this assembly is included in main C# application and used from here.Imagine some method in some class in this assembly which creates a native thread (via _beginthreadex). And here is the question: will be this thread paused when GC starts? First my thought was "No, this is native thread and CLR does not even know about it". But I think it's wrong because such thread can use managed objects, for example:class TheTrick{public:  static void Trick()  {    String^ managedString = L"123";  }};//---#pragma unmanagedclass Native // unmanaged class with native thread{public:  static unsigned ThreadProc(void*)  {    TheTrick::Trick();  // oh no!    return 0;  }  void DoWork()  {    _beginthreadex(NULL, 0, &ThreadProc, NULL, 0, NULL);  }};#pragma managed//---public ref class Managed{public:  void DoWork() // called from C# app  {    Native obj;    obj.DoWork();  }};So as you can see when you call DoWork() - it creates a native thread but this thread can use managed objects so this thread must be paused as well (I think so..). The basic goal I need to achieve: I need a native thread in .NET app, this thread will NOT use managed objects/code/data at all, and this thread must NOT be paused while CLR performs GC.This thread will 'create' some data and .net app will just read it.Is it real?