β

C++对Posix线程API进行封装

YUCOAT 635 阅读

在Linux平台下常常会用pthread系列的函数进行多线程编程。以前一直都在用C API,今天我对这个API进行了简单的封装。

封装好了之后跟Qt中的多线程一样了,只要以thread为基类,派生类并重写run函数就行了!

代码如下:

class thread
{
public:
    thread():isrun(false){}
    void start();
    void quit();
    virtual ~thread(){}
private:
    thread(thread&);            //禁止拷贝构造函数
    void operator=(thread&);
private:
    bool isrun;                 //线程是否被创建
    pthread_t ptid;             //线程ID
protected:
    static void* start_routine(void* arg);
    virtual void run() = 0;     //纯虚函数
};

如果要创建一个线程,只需要派生出一个类,并重写run成员函数就OK:

class thread_test2:public thread
{
protected:
    void run()
    {
        for(int i = 0; i < 10; i++) {
            cout << "thread 2" << endl;
            sleep(1);
        }
    }
};

当然,这只是一个简单的封装,没有涉及到互斥锁之类的问题了……

作者:YUCOAT
Love life & love potato
原文地址:C++对Posix线程API进行封装, 感谢原作者分享。