5 #ifndef RECAST_THREADEDCHUNKEDTEMPERATUREWORLDUPDATER_H
6 #define RECAST_THREADEDCHUNKEDTEMPERATUREWORLDUPDATER_H
11 #include <condition_variable>
42 std::shared_ptr<ITemperatureWorldChunkableObservable<ITemperatureWorldChunkableGeneratable<ITemperatureWorldChunkableMutable<ITemperatureWorldChunkable<ITemperatureWorld>>>>>
world;
43 std::function<std::shared_ptr<IUpdaterTemperatureWorldSemiChunkUpdatable<IUpdater>>(std::shared_ptr<ITemperatureWorldBoundable<ITemperatureWorld>>)>
makeChunkUpdaterFn;
48 std::vector<std::shared_ptr<IUpdaterTemperatureWorldSemiChunkUpdatable<IUpdater>>>
updaters;
51 std::vector<std::future<void>>
tasks;
52 std::queue<std::pair<std::shared_ptr<IUpdater>, std::promise<void>>>
tasksQueue;
58 static void _work(std::shared_ptr<ThreadData> data);
61 std::shared_ptr<ThreadData>
_data;
65 #endif //RECAST_THREADEDCHUNKEDTEMPERATUREWORLDUPDATER_H
static void _work(std::shared_ptr< ThreadData > data)
Definition: ThreadedChunkedTemperatureWorldUpdater.cpp:66
std::queue< std::pair< std::shared_ptr< IUpdater >, std::promise< void > > > tasksQueue
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:52
std::mutex updatersMutex
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:49
Definition: ITemperatureWorldChunkableMutable.hpp:40
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:40
void update() override
Definition: ThreadedChunkedTemperatureWorldUpdater.cpp:42
Definition: ITemperatureWorldChunkableObservable.hpp:42
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:29
Definition: ITemperatureWorldChunkableGeneratable.hpp:46
std::condition_variable tasksQueueWait
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:54
std::shared_ptr< ITemperatureWorldChunkableObservable< ITemperatureWorldChunkableGeneratable< ITemperatureWorldChunkableMutable< ITemperatureWorldChunkable< ITemperatureWorld > > > > > world
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:42
std::mutex tasksQueueWaitMutex
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:55
std::function< std::shared_ptr< IUpdaterTemperatureWorldSemiChunkUpdatable< IUpdater > >std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld > >)> makeChunkUpdaterFn
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:43
Definition: IUpdater.hpp:13
std::vector< std::future< void > > tasks
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:51
~ThreadedChunkedTemperatureWorldUpdater()
Definition: ThreadedChunkedTemperatureWorldUpdater.cpp:28
std::shared_ptr< ThreadData > _data
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:61
std::vector< std::thread > workers
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:46
ThreadedChunkedTemperatureWorldUpdater(std::shared_ptr< ITemperatureWorldChunkableObservable< ITemperatureWorldChunkableGeneratable< ITemperatureWorldChunkableMutable< ITemperatureWorldChunkable< ITemperatureWorld >>>>> world, std::function< std::shared_ptr< IUpdaterTemperatureWorldSemiChunkUpdatable< IUpdater >>(std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >>)> makeChunkUpdaterFn)
Definition: ThreadedChunkedTemperatureWorldUpdater.cpp:11
std::mutex tasksQueueMutex
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:53
std::vector< std::shared_ptr< IUpdaterTemperatureWorldSemiChunkUpdatable< IUpdater > > > updaters
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:48
static void _watchChunk(std::shared_ptr< ThreadData > data, std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >> chunk)
Definition: ThreadedChunkedTemperatureWorldUpdater.cpp:89
std::atomic< bool > isRunning
Definition: ThreadedChunkedTemperatureWorldUpdater.hpp:45