前言
文档分为两个部分。
第一部分:前言,这篇文章主要是记录了一个简单的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
#include
#include
#include
#include "initThread.h" using namespace android ; sp
mFun1Thread; sp
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
#include
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__ */