当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C/C++_多和多线程_demo1

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

2018年12月26日  | 移动技术网IT编程  | 我要评论

熊兴元,赵红霞个人资料,漫画论坛

前言

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网