- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# src/TaskBasedFlockSim/TaskContext.h

    00001
    00002
    00003
    00004
    00005
    00006
    00007
    00008
    00009
    00010
    00011
    00012
    00013
    00014
    00015
    00016
    00017
    00018
    00019
    00020 #ifndef _TASK_CONTEXT_H_
    00021 #define _TASK_CONTEXT_H_
    00022
    00023 #include <boost\utility.hpp>
    00024 #include <windows.h>
    00025 #include "ITask.h"
    00026 #include <vector>
    00027
    00028 namespace TaskBasedFlockSim
    00029 {
    00030
    00031 typedef std::vector<ITaskPtr> Tasks;
    00032
    00033 class TaskContext :
    00034         boost::noncopyable
    00035 {
    00036 public:
    00037         TaskContext(void);
    00038
    00039         ~TaskContext(void);
    00040
    00041         size_t DecrementCompletedTasksCount(void);
    00042
    00043         void WaitOnTasksCompletion(void);
    00044
    00045         void SignalTasksCompleted(PTP_CALLBACK_INSTANCE instance);
    00046
    00047         void AddTask(ITaskPtr task);
    00048
    00049         const Tasks& GetTasks(void) const;
    00050
    00051 private:
    00052         LONG m_tasksCount;
    00053
    00054         HANDLE m_tasksCompletedEvent;
    00055
    00056         std::vector<ITaskPtr> m_tasks;
    00057 };
    00058
    00059 }
    00060
    00061 #endif