일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Native
- SDK
- arrow
- 파싱
- CentOS
- JSON
- EventDrivenThread
- map
- EC2
- Servlet
- 크롬확장
- 세미콜론
- 서블릿
- string
- 설치
- JavaScript
- chrome extension
- cygwin
- 클로저
- 몽고db
- electron
- MongoDB
- jQuery
- Tizen
- es6
- CSS
- array
- promise
- ;
- 타이젠
- Today
- 2
- Total
- 53,433
KnP House for Daily
Tizen Native App Thread 본문
Tizen Native App는 다음과 같이 크게 두가지 종류의 Thread를 제공 하는것 같다.
- Thread
- EventDrivenThread
interface 인 IRunnable을 주축으로 Thread , EventDrivenThread 를 이용하게 된다.
단순히 IRunnable 을 사용하게 되면,
#include <FBase.h>
using namespace Tizen::Base;
using namespace Tizen::Base::Runtime;
class MyRun
: public Tizen::Base::Object
, public Tizen::Base::Runtime::IRunnable
{
public:
Object* Run(void)
{
for (int i = 0; i < 10000; ++i)
{
// ...
}
return null;
}
}
위와 같이 Run() 메서드에서 작업하고 자하는 일을 진행 하면 된다.
1. Thread
Thread를 알아보쟈
Thread class 는 비동기 실행을 위한 worker thread를 제공 해준다. 또한 멀티 스레딩이 가능하다.
흔히 아는 스레드라고 생각하면 됀다.
아주간단하게 1~10까지 더하는 것을 스레드로 돌려보쟝
using namespace Tizen::Base;
using namespace Tizen::Base::Runtime;
class MyThread
: public Thread
{
public:
MyThread(void)
{
}
virtual ~MyThread(void)
{
}
result Construct(void)
{
return Thread::Construct();
}
Object* Run(void)
{
int sum = 0;
for(int i=1 ; i<=10 ; i++){
sum += i;
}
AppLog("sum = %d",sum);
return null;
}
};
/*
* 스레드를 호출하는 메인 클래스
*/
void
MyApplication::ThreadSample(void)
{
MyThread* pMyThread = new MyThread;
pMyThread->Construct();
pMyThread->Start();
pMyThread->Join();
delete pMyThread;
}
Thread 를 상속받은 클래스를 선언하고,
Thread::Construct()로 스레드 인스터스를 초기화 해준다.
그리고 Run()메서드로 작업할 것들을 써준다. Run()메서드는 IRunnable 인스턴스 없이 start가 가능하며, 리턴 타입은 Object 이다.
스레드를 실행 할 메인 클래스에서는, 객체를 생성하여 Construct()를 호출하고, Start()메서드를 호출하면
Run()메서드가 실행되며 스레드 작업이 시작 된다.
Join()메서드가 호출되면 스레드 작업이 끝났을 때 스레다작업이 종료되며, delete를 통해 객체를 삭제하면됀당.
2. EventDrivenThread
위 그림과 같이 EventDrivenThread는 Thread와 다르게 일정 간격을 두고 작업이 반복 실행되게 해준다.
Timer class를 이용하여 지정한 시간이 지난 후 Task를 완료 시키고 완료시키고 반복된다.
1~10까지 더하는 작업을 1분 간격으로 진행되는 것을 해보쟝
using namespace Tizen::Base;
using namespace Tizen::Base::Runtime;
MyTimerThread::MyTimerThread(void)
: __pTimer(null)
, __count(0)
{
}
MyTimerThread::~MyTimerThread(void)
{
delete __pTimer;
}
result
MyTimerThread::Construct(void)
{
return EventDrivenThread::Construct();
}
bool
MyTimerThread::OnStart(void)
{
__pTimer = new Timer();
__pTimer->Construct(*this);
__pTimer->StartAsRepeatable(10000);
return true;
}
void
MyTimerThread::OnStop(void)
{
__pTimer->Cancel();
}
void
MyTimerThread::OnTimerExpired(Timer& timer)
{
int sum = 0;
for(int i=0 ; i<10 ; i++){
sum += i;
}
AppLog("%d",sum);
}
/*
* 여기부턴 스레드를 실행 시키는 메인 클래스 부분
*/
ThreadTestForm::ThreadTestForm(void)
: check(0)
, myTimerThread(null)
{
}
ThreadTestForm::~ThreadTestForm(void)
{
AppLog("ThreadTestForm::~ThreadTestForm");
}
void
ThreadTestForm::ThreadStart(void)
{
myTimerThread = new MyTimerThread();
myTimerThread->Construct();
myTimerThread->Start();
}
void
ThreadTestForm::ThreadStop(void)
{
myTimerThread->Quit();
myTimerThread->Join();
delete myTimerThread;
myTimerThread = null;
}
전반적으로 Thread와 비슷 한데, 다른 부분은
Timer class를 생성하여, StartAsRepeatable() 메서드로 반복 시간을 결정하고,
OnTimerExpired(Timer& timer) 메서드에서 작업을 진행 하게 된다.
'Tizen > Tizen 개발' 카테고리의 다른 글
Tizen Native App ListView의 구조 (0) | 2014.06.03 |
---|---|
Tizen Native App SendUserEvent()의 예상치 못한 결과 (0) | 2014.05.26 |
Tizen Native App Thread (0) | 2014.05.25 |
Tize Native JSON TYPE별 사용법 (0) | 2014.05.22 |
Tizen Native JSON parsing (0) | 2014.05.22 |
Tizen Native App HTTP 예제 (0) | 2014.05.19 |
- Tag
- EventDrivenThread, Tizen, tizen thread, 타이젠