⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 activeobjectexam.cpp

📁 国内著名嵌入式培训机构内部资料,内含一些实例代码,包括技术专题书籍
💻 CPP
字号:
/*
 ============================================================================
 Name		: ActiveObjectExam.cpp
 Author	  : hou maoqing
 Copyright   : Copyright (c) Hou maoqing 2008
 Description : Exe source file
 ============================================================================
 */

//  Include Files  

#include "ActiveObjectExam.h"
#include <e32base.h>
#include <e32std.h>
#include <e32cons.h>			// Console

#include "ClockTimer.h"
#include "CalculateSum.h"

//  Constants

_LIT(KTextConsoleTitle, "Console");
_LIT(KTextFailed, " failed, leave code = %d");
_LIT(KTextPressAnyKey, " [press any key]\n");

//  Global Variables

LOCAL_D CConsoleBase* console; // write all messages to this

CConsoleBase* GetConsole()
	{
	return console;
	}

//  Local Functions

LOCAL_C void MainL()
	{
	//
	// add your program code here, example code below
	//
	console->Write(_L("Hello, world!\n"));
	}

LOCAL_C void DoStartL()
	{
	// Create active scheduler (to run active objects)
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
	CleanupStack::PushL(scheduler);
	CActiveScheduler::Install(scheduler);

	// Create AO
	CClockTimer* pClockTimer=CClockTimer::NewLC();
	pClockTimer->StartL(1*1000*1000);  //Send a request, start task
	
	//使用AO分散完成大任务
	CCalculateSum* pCalculateSum=CCalculateSum::NewLC();
	pCalculateSum->StartCalculate();
	
	//普通的一次完成大任务
	TInt nSum=0;
	for(TInt i=1;i<=10000;i++)
		nSum+=i;
	TBuf<40> bufSum;
	bufSum.AppendFormat(_L("By C++, Sum=%d\n"),nSum);
	console->Write(bufSum);
	
	// Start ActiveScheduler
	CActiveScheduler::Start();
	
	CleanupStack::PopAndDestroy(2);
	
	// Delete active scheduler
	CleanupStack::PopAndDestroy(scheduler);
	}

//  Global Functions

GLDEF_C TInt E32Main()
	{
	// Create cleanup stack
	__UHEAP_MARK;
	CTrapCleanup* cleanup = CTrapCleanup::New();

	// Create output console
	TRAPD(createError, console = Console::NewL(KTextConsoleTitle, TSize(KConsFullScreen,KConsFullScreen)));
	if (createError)
	return createError;

	// Run application code inside TRAP harness, wait keypress when terminated
	TRAPD(mainError, DoStartL());
	if (mainError)
	console->Printf(KTextFailed, mainError);
	console->Printf(KTextPressAnyKey);
	console->Getch();

	delete console;
	delete cleanup;
	__UHEAP_MARKEND;
	return KErrNone;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -