source: Test/threadTest/main.cpp @ 40

Revision 40, 1.4 KB checked in by art, 12 years ago (diff)

Bindings changed to Packages

Line 
1 
2#include <nrEngine/nrEngine.h>
3#include <cmath>
4
5using namespace nrEngine;
6
7class Task : public ITask
8{
9        private:
10                int n;
11                int c;
12        public:
13                Task(int i) : ITask(), n(i), c(0)
14                {
15                        char name[256];
16                        sprintf(name, "thread-%d", i);
17                        setTaskName(name);
18                }
19
20                Result updateTask()
21                {
22                        c++;
23                        //float res = 1.0;
24                        if (n == 0){
25                                //for (int i=0; i < 1000000; i++)
26                                {
27                                //      res = cos(sin(c) * sin(c) * float(i) / 1000.0);
28                                }
29                                float startTime = Engine::sClock()->getTime();
30                                while (Engine::sClock()->getTime() < startTime + 2.0){}
31                                printf("0\n");
32                        }
33                        if (n == 1){
34                                float startTime = Engine::sClock()->getTime();
35                                while (Engine::sClock()->getTime() < startTime + 1.0){}
36                                printf("1\n");
37                        }
38                       
39                        printf("Thread: %d - %d\n", n, c);
40                        return OK;
41                }
42};
43
44
45int main (int argc, char* argv[])
46{
47        Engine::sEngine()->initializeLog("./");
48        Engine::sEngine()->initializeEngine();
49
50        // create some task and add them as a thread
51        for (int i=0; i < 3; i++)
52        {
53                SharedPtr<ITask> task (new Task(i));
54                Engine::sKernel()->AddTask(task, ORDER_NORMAL, TASK_IS_THREAD);
55        }
56        SharedPtr<ITask> task (new Task(999));
57        Engine::sKernel()->AddTask(task, ORDER_NORMAL, TASK_IS_THREAD);
58       
59        // execute the tasks
60        float startTime = Engine::sClock()->getTime();
61        while (Engine::sClock()->getTime() < startTime + 60.0)
62        {
63                Engine::sKernel()->OneTick();
64        }
65       
66        // release used data
67        Engine::release();
68
69        return 0;
70}
Note: See TracBrowser for help on using the repository browser.