1234567891011121314151617181920212223242526272829303132333435363738 |
- #pragma once
- #include "nu/lfmpscq.h"
- #include "nu/LockFreeLIFO.h"
- #define WIN32_LEAN_AND_MEAN
- #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_node_t *GetAPC();
- void Schedule(threadloop_node_t *apc);
- 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;
- };
|