在Visual Studio 2010中定义线程
Define Threads in Visual Studio 2010
我想在Visual Studio 2010中创建一个包含2个线程的c++应用程序:
- 从外部文件读取数据
- 将数据写入外部文件
我已经读了关于线程的理论,但不太明白如何使用它。有没有人可以告诉我如何在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选项)。
相关文章:
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- C++多线程程序:变量定义为类成员的隔离错误
- 如何设置"this"线程的自定义名称?
- FFmpeg:使用自定义线程池进行并行编码
- glib:在另一个线程上处理自定义 GMainContext* 循环,不引发信号处理程序
- 自定义线程池的令人失望的性能
- 未定义的行为,具有setlocale和多线程
- 在C 中定义线程
- 在 C++ 中易变:我是否应该定义一个可能被几个线程更改的变量作为易失性
- openMP 在自定义容器中从 2 到 4 个线程执行二进制搜索时速度变慢
- 正在终止自定义标准::线程池
- C++自定义线程中创建 cef 对象
- 如何在 cocos2d-x 中的另一个线程中运行自定义网络代码
- 是否可以定义一个std::线程并在以后初始化它
- 如何以定义良好的线程安全方式将C++字符串传递给Java JNI
- 线程中的堆栈大小在C++中定义了什么
- 在Visual Studio 2010中定义线程
- 定义线程函数时的Std::thread表示法
- 如何定义线程局部的局部静态变量
- 在Qt应用程序中自定义线程调度