12345678910111213141516171819202122232425262728293031323334353637383940 |
- #pragma once
- #include "nu/lfmpscq.h"
- #include "nu/LockFreeLIFO.h"
- #include <windows.h>
- struct threadloop_node_t : public queue_node_t
- {
- void (*func)(void *param1, void *param2, double real_value);
- void *param1;
- void *param2;
- double real_value;
- };
- class ThreadLoop
- {
- public:
- ThreadLoop();
- ~ThreadLoop();
- threadloop_node_t *GetAPC();
- void Schedule(threadloop_node_t *apc);
- void Step();
- void Step(unsigned int milliseconds);
- void Run();
- void Kill();
- private:
- void RefillCache();
- HANDLE procedure_notification;
- HANDLE kill_switch;
- mpscq_t procedure_queue;
-
- static lifo_t procedure_cache;
- static lifo_t cache_bases;
- };
|