在Visual Studio 2010中定义线程

Define Threads in Visual Studio 2010

本文关键字:定义 线程 2010 Visual Studio      更新时间:2023-10-16

我想在Visual Studio 2010中创建一个包含2个线程的c++应用程序:

  1. 从外部文件读取数据
  2. 将数据写入外部文件

我已经读了关于线程的理论,但不太明白如何使用它。有没有人可以告诉我如何在Visual Studio 2010中简单地定义和运行这两个线程?

目前我有以下的例子不工作:

class Thread
{
   public:
      Thread();
      int Start(void * arg);
   protected:
      int Run(void * arg);
      static void * EntryPoint(void*);
      virtual void Setup();
      virtual void Execute(void*);
      void * Arg() const {return Arg_;}
      void Arg(void* a){Arg_ = a;}
   private:
      THREADID ThreadId_;
      void * Arg_;
};
Thread::Thread() {}
int Thread::Start(void * arg)
{
   Arg(arg); // store user data
   int code = thread_create(Thread::EntryPoint, this, & ThreadId_);
   return code;
}
int Thread::Run(void * arg)
{
   Setup();
   Execute( arg );
}
/*static */
void * Thread::EntryPoint(void * pthis)
{
   Thread * pt = (Thread*)pthis;
   pt->Run( pt->Arg() );
}
virtual void Thread::Setup()
{  
    // Do any setup here
}
virtual void Thread::Execute(void* arg)
{
        // Your code goes here
}

我也开放好的教程或代码示例。

如果程序不能编译,则应该包含http://www.MSDN.com中指定的未定义函数的头文件。还要确保线程不是从DLL入口点(如DLL main())启动的。

另外,您应该在编译时启用多线程(我相信是/MT选项)。