使用 C++11 的线程库 class
Thread base class using C++11
因为我是 C++11 的新手,所以我正在寻找线程基础 class 的正确实现,使用 C++11 多线程功能并将参数传递给 class,开始并停止线程......
所以像这样的东西:
http://www.codeproject.com/Articles/21114/Creating-a-C-Thread-Class
但使用 C++11 可以获得 OS-独立性。
我用谷歌搜索了它,但没有找到任何有用的信息。
也许有人熟悉一个好的开源实现?
编辑
准确解释我的问题:
我已经知道 std::thread
,但我的目的分别是为 std::thread
使用包装器-class,而不是大量处理它。我目前正在使用下面的 class-结构(从 1 年开始)。但是我分别被限制在 Windows-API 上,这不是我想要的。
class ThreadBase {
public:
ThreadBase();
virtual ~ThreadBase();
// this is the thread run function, the "concrete" threads implement this method
virtual int Run() = 0;
// controlling thread behaviour, Stop(), Resume() is not that necessary (I implemented it, beacuse the API gives me the opportunity)
virtual void Start() const;
virtual void Stop() const;
// returns a duplicated handle of the thread
virtual GetDuplicateHdl() const; //does std::thread give me something similar to that?
protected:
// return the internal thread handle for derived classes only
virtual GetThreadHdl() const;
//...block copy constructor and assignment operator
private:
// the thread function
void ThreadFunc(void * Param); //for Windows the return value is WINAPI
//THandleType? ThreadHdl;
unsigned long ThreadId;
};
#include <iostream>
#include <thread>
void function()
{
std::cout << "In Thread\n";
}
int main()
{
std::thread x(function);
// You can not let the object x be destroyed
// until the thread of execution has finished.
// So best to join the thread here.
x.join();
}
您需要的所有线程支持都可以找到 here。
因为我是 C++11 的新手,所以我正在寻找线程基础 class 的正确实现,使用 C++11 多线程功能并将参数传递给 class,开始并停止线程...... 所以像这样的东西: http://www.codeproject.com/Articles/21114/Creating-a-C-Thread-Class 但使用 C++11 可以获得 OS-独立性。
我用谷歌搜索了它,但没有找到任何有用的信息。 也许有人熟悉一个好的开源实现?
编辑
准确解释我的问题:
我已经知道 std::thread
,但我的目的分别是为 std::thread
使用包装器-class,而不是大量处理它。我目前正在使用下面的 class-结构(从 1 年开始)。但是我分别被限制在 Windows-API 上,这不是我想要的。
class ThreadBase {
public:
ThreadBase();
virtual ~ThreadBase();
// this is the thread run function, the "concrete" threads implement this method
virtual int Run() = 0;
// controlling thread behaviour, Stop(), Resume() is not that necessary (I implemented it, beacuse the API gives me the opportunity)
virtual void Start() const;
virtual void Stop() const;
// returns a duplicated handle of the thread
virtual GetDuplicateHdl() const; //does std::thread give me something similar to that?
protected:
// return the internal thread handle for derived classes only
virtual GetThreadHdl() const;
//...block copy constructor and assignment operator
private:
// the thread function
void ThreadFunc(void * Param); //for Windows the return value is WINAPI
//THandleType? ThreadHdl;
unsigned long ThreadId;
};
#include <iostream>
#include <thread>
void function()
{
std::cout << "In Thread\n";
}
int main()
{
std::thread x(function);
// You can not let the object x be destroyed
// until the thread of execution has finished.
// So best to join the thread here.
x.join();
}
您需要的所有线程支持都可以找到 here。