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

本文介绍了一个简单的Android系统上的双线程Demo实现方法。通过创建两个线程并让它们同时运行输出打印信息,演示了线程并发的概念。该Demo适用于全志H6平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值