前言
文档分为两个部分。
第一部分:前言,这篇文章主要是记录了一个简单的demo,证明两个线程在同时运行,记录下学习内容;
第二部分:demo的内容,运行环境,如何实现。
主要内容
环境
软件运行环境:Android N
软件编译环境:
硬件环境:全志H6
demo功能
在android 系统上运行一个demo,开辟两条线程,让它们同时工作输出打印。
代码内容
在android代码下面external目录下新建文件夹initDemo,创建以下三个文件:Android.mk、initThread.cpp、initThread.h
Android.mk内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDFLAGS += -shared \
LOCAL_SRC_FILES:= \
initThread.cpp \
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/ \
LOCAL_SHARED_LIBRARIES := \
libcutils \
libutils \
liblog \
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Wno-multichar
LOCAL_MODULE:= testForThread
#include $(BUILD_SHARED_LIBRARY)
include $(BUILD_EXECUTABLE)
initThread.cpp内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "initThread.h"
using namespace android ;
sp<DoFun1Thread> mFun1Thread;
sp<DoFun2Thread> mFun2Thread;
int main(int argc, char* const argv[])
{
mFun1Thread = new DoFun1Thread();
mFun2Thread = new DoFun2Thread();
mFun1Thread->startThread();
mFun2Thread->startThread();
while(true)
{
printf("zjw,in main!\n");
sleep(1);
}
return 0;
}
initThread.h内容如下:
#ifndef __INIT_THREAD_H__
#define __INIT_THREAD_H__
#include <utils/Thread.h>
#include <unistd.h>
namespace android {
int Fun1Thread(void)
{
printf("Fun1Thread,one!\n");
sleep(1);
return true;
}
int Fun2Thread(void)
{
printf("Fun2Thread,two!\n");
sleep(1);
return true;
}
class DoFun1Thread : public Thread {
bool mRequestExit;
public:
DoFun1Thread() :
mRequestExit(false) {
}
void startThread() {
run("testFun1Thread", PRIORITY_URGENT_DISPLAY);
}
void stopThread() {
mRequestExit = true;
}
virtual bool threadLoop() {
if (mRequestExit) {
return false;
}
return Fun1Thread();
}
};
class DoFun2Thread : public Thread {
bool mRequestExit;
public:
DoFun2Thread() :
mRequestExit(false) {
}
void startThread() {
run("testFun2Thread", PRIORITY_URGENT_DISPLAY);
}
void stopThread() {
mRequestExit = true;
}
virtual bool threadLoop() {
if (mRequestExit) {
return false;
}
return Fun2Thread();
}
};
}; /* namespace android*/
#endif /* __INIT_THREAD_H__ */