source: Test/threadTest/main.cpp @ 12

Revision 12, 1.0 KB checked in by art, 13 years ago (diff)
  • Friendly thread execution added (yielding of threads and main thread)
  • Test directory added, where simple test programms will be build
  • Each Makefile now contains the TOPDIR variable
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 < 10000000; i++)
26                                {
27                                        res = cos(sin(c) * sin(c) * float(i) / 1000.0);
28                                }
29
30                        printf("Thread: %d - %d - %f\n", n, c, res);
31                        return OK;
32                }
33};
34
35
36int main (int argc, char* argv[])
37{
38        Engine::sEngine()->initializeLog("./");
39        Engine::sEngine()->initializeEngine();
40
41        // create some task and add them as a thread
42        for (int i=0; i < 3; i++)
43        {
44                SharedPtr<ITask> task (new Task(i));
45                Engine::sKernel()->AddTask(task, ORDER_NORMAL, TASK_IS_THREAD);
46        }
47        SharedPtr<ITask> task (new Task(999));
48        Engine::sKernel()->AddTask(task, ORDER_NORMAL);
49       
50        // execute the tasks
51        for (int i=0; i < 100; i++)
52        {
53                Engine::sKernel()->OneTick();
54        }
55       
56        // release used data
57        Engine::release();
58
59        return 0;
60}
Note: See TracBrowser for help on using the repository browser.