Android线程封装基类Thread
来源:互联网 发布:使用软件侵权鉴定 编辑:程序博客网 时间:2024/06/10 19:30
2011-05-17 14:41
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
};
/*
* 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
};
转载请保留:http://hi.baidu.com/%B6%C5%B2%FD%B1%F2/
- Android线程封装基类Thread
- Android线程封装基类Thread
- Android线程封装基类Thread
- android的线程封装(Thread)
- muduo源码分析:线程类Thread封装
- c++11 thread 封装线程类
- android 线程状态 Thread类
- 《ASCE1885的源码分析》の跨平台线程对象Thread封装基类
- 线程封装组件(BackgroundWorker)和线程(Thread)
- Android------线程thread
- Android 线程之Thread
- Android Thread线程
- Android 线程 thread
- Thread类封装
- android的线程封装
- Android Framework线程封装
- Android Framework线程封装
- android的线程封装
- Ant build.xml文件详解
- Javascript和CSS浏览器兼容总结[问题点数:40分]
- 用VC实现PC并行端口数字信息的输入输出
- c/c++内存分配、指针和数组对比
- Win XP必须禁止的服务
- Android线程封装基类Thread
- dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)
- C# DLL库自动注册的两种方法(调用Regsvr32法、调用DllRegisterServer函数法)
- 在sqlite中怎么统计本周本月数据
- iphone 中两张图合为一张图片
- Android 广播机制
- Hadoop源代码分析
- 编写ant:build.xml的方法
- Oracle 10g 入门须知---[Oracle 10g]