Android 中 C++ Thread线程用法
来源:互联网 发布:大数据的前沿技术培训 编辑:程序博客网 时间:2024/06/05 15:11
转自:http://blog.csdn.net/u010164190/article/details/52625423
1、Android把线程C++封装Thread类,它是线程的基类
2、使用Thread时,创建一个类继承于Thread类,实现threadLoop()方法是纯虚函数,在子类中实现
3、启动线程,调用run()函数
class Thread : virtual public RefBase//RefBase封装sp、wp智能指针{
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();
/*readyToRun()在Android4.4版本 system/core/libutils/Threads.cpp,
在run()函数里的_threadLoop()方法被调用self->readyToRun();初始化线程,
之后调用result = self->threadLoop();真正启动线程 */
// 可重载此虚函数进行初始化工作,为隐式调用virtual status_t readyToRun();
//线程退出(同步)
status_t requestExitAndWait();
protected:
// 判断requestExit()是否被调用过
bool exitPending() const;
private:
// 线程函数。若此函数返回true,当requestExit()没被调用过时会再次调用此函数;若返回false,
在该函数返回时线程将退出
};
举例:
Thread类继承于ReBase虛基类,new一个sp的模板类,会最终调用该类对象对Refbase重载的onFirstRef();
例如: sp<MainThread> mMainThread; //成员变量;智能指针sp<char> == char *等价
mMainThread = newMainThread();//new 一个sp的模板类赋值给成员变量mMainThread
虛基类Refbase()中的onFirstRef()方法被调用,此时run()反方发被调用,线程启动,调用threadLoop()不停循环执行。
class MainThread : public Thread {
public:
MainThread();
virtual ~MainThread();
virtual void onFirstRef()
{
run("MainThread", PRIORITY_DEFAULT);
}
virtual status_t readyToRun();
virtual bool threadLoop();
virtual void requestExit();
void requestLock();
private:
sp<MainThread> mMainThread;
};
- Android 中 C++ Thread线程用法
- Android 中 C++ Thread线程用法
- Android 中 C++ Thread线程用法
- Android中线程Thread的使用
- 【c++】线程thread类
- C++/MFC-线程Thread
- C++:线程(std::thread)
- Android------线程thread
- Android 线程之Thread
- Android Thread线程
- Android 线程 thread
- JAVA中线程Thread
- Thread线程中启动线程
- Thread中join用法
- java中Thread用法
- Java 中Thread用法
- Java 中Thread用法
- Android中使用Handler和Thread线程执行后台操作
- svn 日常
- dwg转dxf有什么好的操作方法
- centos访问Windows共享文件两种方式:
- Qualcomm Simlock——解锁流程
- Android属性动画个人小结
- Android 中 C++ Thread线程用法
- Struts2框架
- 关于Retrofit返回错误信息的统一解决办法
- 从搭建环境到一个简单Android App测试实例
- [codevs1183]泥泞的道路(二分+正环)
- 安卓配置正式包和测试包不同的名字、图标、同时安装,(极光配置测试和正式)
- ETL学习笔记之实现
- 使用OkhttpUtils作为网络框架同时,使用Glide加载Https图片
- 图像语义分割常用数据库