#pragma once #include "shm_helper.h" class ShmManager { public: ShmManager(); ~ShmManager(); void set_gpu_info(int gpu_id, uint64_t vmem_size, uint64_t shared_handle); // request void process_requests(); // heart beat void check_heart_beats(); void run_busy_loop(); void stop_busy_loop() { stop_loop_flag.store(true, std::memory_order_release); } void register_callback_on_worker_change( std::function &)> cb) { cb_on_worker_change = std::move(cb); } private: ShmHelper *shm_helper; std::vector local_worker_tgids; std::vector alive_worker_tgids; std::vector valid_gpu_ids; std::atomic stop_loop_flag; std::function &)> cb_on_worker_change; };