除去硝酸钾中的氯化钠:简单说说android的线程封装
来源:百度文库 编辑:中财网 时间:2024/10/06 14:28:29
简单写一下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;
封装的文件:/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;
radiohead 的 Paranoid Android 中文翻译
请问P4 2.66 775封装的CPU是不是支持超线程技术?
求Java 封装、继承、多态最简单的解释
说说简单的闭经治疗
什么是超线程?电脑中所讲的,谁能具体的说说?
用简单的JavaScript伪实现面向对象的继承,封装,重载
简单的说说屏障的概念
什么是封装?说的简单易董点吧,我的理解能力差,看了好长时间也没看懂
RAID是什么意思?简单的说说就可以
简单的说说毕业设计是设计什么的?
谁能简单的说说蓝极速?
简单说说主机各个配置的功能
RAID是什么意思?简单的说说就可以
简单说说乐园惊险游戏的感觉
简单说说计算机多媒体技术的发展历程
什么是竞价,什么是竞价排名。简单的说说
股利股息红利的区别简单说说
CPU的封装有哪几种?
protel封装的问题
元器件的封装谁知道
WIN98的封装方法
二极管封装的问题
二极管的封装
BGA封装的芯片