/* * Copyright (C) 2025 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "shared/source/command_stream/host_function_worker_interface.h" #include #include #include namespace NEO { class HostFunctionWorkerCV : public IHostFunctionWorker { public: HostFunctionWorkerCV(bool skipHostFunctionExecution, const std::function &downloadAllocationImpl, GraphicsAllocation *allocation, HostFunctionData *data); ~HostFunctionWorkerCV() override; void start() override; void finish() override; void submit() noexcept override; private: void workerLoop(std::stop_token st) noexcept; std::mutex pendingAccessMutex; std::condition_variable cv; uint32_t pending{0}; }; static_assert(NonCopyableAndNonMovable); } // namespace NEO