栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

浅析android中的线程封装

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅析android中的线程封装

简单写一下android 对线程 的c++封装~~~其实API已经写得很清楚了~~

封装 的文件 :/frameworks/base/include/utils/threads.h

这里不讨论具体实现,具体实现是和系统 相关联的~~首先Anroid提供了几个与直接创建线程的函数:
复制代码 代码如下:
inline bool createThread(thread_func_t f, void *a) 

inline bool createThreadEtc(thread_func_t entryFunction,
                            void *userData,
                            const char* threadName = "android:unnamed_thread",
                            int32_t threadPriority = PRIORITY_DEFAULT,
                            size_t threadStackSize = 0,
                            thread_id_t *threadId = 0)

inline thread_id_t getThreadId()

下面看看Android的mutex,基本和posix的mutex很像,唯一增加了一个Mutex::Autolock,这个自动锁用得是比较多的,在作用域里加锁,脱离作用域就会自动解锁。
复制代码 代码如下:
class Autolock {
    public:
        inline Autolock(Mutex& mutex) : mpMutex(&mutex) { mutex.lock(); }
        inline Autolock(Mutex* mutex) : mpMutex(mutex) { mutex->lock(); }
        inline ~Autolock() { mpMutex->unlock(); }
    private:
        Mutex*  mpMutex;
    };

再看看Andorid的Condition,用法基本和posix差不多,因为本身是条件变量所以只有一个mutex参数~~

最后看看android的thread类,在实际使用的过程中都是继承这个thread类来创建自己的thread类,并定义线程的执行内容,下面主要围绕创建自己的线程类需要实现的几个函数说说:

class Thread : virtual public Refbase
首先它继承自Refbase类,一般在使用的时候要实现onFirstRef()这个父类函数,一般经典 的用法是在里面运行Thread的run函数,这样在创建thread的实例 的时候就开始运行这个线程了。当然也可以不在这里执行run()函数,在其他地方执行run()函数启动这个线程。  
复制代码 代码如下:
virtual status_t    run(    const char* name = 0,
                                int32_t priority = PRIORITY_DEFAULT,
                                size_t stack = 0);

创建一个thread实例的时候,线程并没有运行,只有在执行run()函数的时候,线程才开始真正的开始运行。

virtual status_t    readyToRun();
这个函数定义thread执行前的初始化工作

virtual bool        threadLoop() = 0;
这个函数是每个线程类都要实现的,在这里定义thread的执行内容,这个函数如果返回true,则函数会不停地执行threadloop中的内容,如果这个函数返回false,则threadloop中的内容仅仅执行一次线程就会退出。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/164887.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号