前言
文档分为两个部分。
第一部分:前言,这篇文章主要是记录了一个简单的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__ */
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/605796.html