Android C++ 线程使用

 Android对Linux线程提供了C++封装Thread类,它是线程的基类。使用Thread类,需创建一个新类继承于Thread类,并实现threadLoop()方法,它即是线程函数。要启动线程,调用run()函数即可。
 
 /*
 * Android线程封装的基类
 */
class Thread : virtual public RefBase
{
public:
                        Thread(bool canCallJava = true);
                        virtual             ~Thread();

                        /* 启动线程,即创建一个新的线程并执行threadLoop()虚函数 */
                         virtual status_t    run(    const char* name = 0,
                                int32_t priority = PRIORITY_DEFAULT,
                                size_t stack = 0);
    
                         /* 要求退出线程(这个函数是异步的) */
                        virtual void        requestExit();

                        /* 可以重载此虚函数以进行初始化工作,但必须显示调用 */
                        virtual status_t    readyToRun();
    
                        /* 要求线程退出(同步的) */
                        status_t    requestExitAndWait();

protected:
                        /* 判断requestExit()是否被调用过 */
                        bool        exitPending() const;
    
private:
                        /* 线程函数。若此函数返回true,当requestExit()没被调用过时会在次调用此函数;若返回false,
                        * 在该函数返回时线程将退出
                        */
                        virtual bool        threadLoop() = 0;

private:
                        Thread& operator=(const Thread&);
                        static  int             _threadLoop(void* user);
                        const   bool            mCanCallJava;
                        thread_id_t     mThread;
                        Mutex           mLock;
                        Condition       mThreadExitedCondition;
                        status_t        mStatus;
                        volatile bool           mExitPending;
                         volatile bool           mRunning;
                        sp<Thread>      mHoldSelf;
#if HAVE_ANDROID_OS
                        int             mTid;
#endif
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值