使用C++,编写一个在Linux上面运行的,封装了一个线程的类
时间: 2023-05-26 15:04:37 浏览: 71
C++封装的一个跨平台的线程类和锁类
5星 · 资源好评率100%
下面是一个简单的线程类的示例代码:
```c
#include <pthread.h>
#include <unistd.h>
class Thread {
public:
Thread();
virtual ~Thread();
virtual void Run() = 0;
bool Start();
void Join();
private:
static void* ThreadWrapper(void* obj);
pthread_t _threadHandle;
volatile bool _running;
volatile bool _joined;
};
Thread::Thread() :
_running(false),
_joined(false)
{
}
Thread::~Thread()
{
if (_running && !_joined)
pthread_detach(_threadHandle);
}
bool Thread::Start()
{
if (_running || _joined)
return false;
if (pthread_create(&_threadHandle, 0, ThreadWrapper, this) != 0)
return false;
_running = true;
return true;
}
void Thread::Join()
{
if (_running && !_joined) {
pthread_join(_threadHandle, 0);
_joined = true;
}
}
void* Thread::ThreadWrapper(void* obj)
{
reinterpret_cast<Thread*>(obj)->Run();
return 0;
}
```
在上述代码中,线程类使用pthread库中的pthread_create()函数来创建一个新线程,并使用pthread_join()函数等待线程完成执行。Run()方法是用户定义的方法,用于实现线程的主要功能。Start()方法用于启动新线程。Join()方法用于等待线程完成执行。
阅读全文