欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/C++_多和多线程_demo1

程序员文章站 2022-07-06 11:55:15
前言 文档分为两个部分。 第一部分:前言,这篇文章主要是记录了一个简单的demo,证明两个线程在同时运行,记录下学习内容; 第二部分:demo的内容,运行环境,如何实现。 主要内容 环境 软件运行环...

前言

文档分为两个部分。
第一部分:前言,这篇文章主要是记录了一个简单的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__ */