/
nickware_group
/
interference
Обзор
Документация
Войти
/
nickware_group
/
interference
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
include/indk/backends/multithread.h
49 строк
1 KB
nickware44
Namespace renamed ('inn' -> 'indk')
23 авг 2023, 14:19
23 авг 2023, 14:19
8a0f559
Код
Авторство
О чём код?
///////////////////////////////////////////////////////////////////////////// // Name: // Purpose: // Author: Nickolay Babbysh // Created: 18.10.22 // Copyright: (c) NickWare Group // Licence: MIT licence ///////////////////////////////////////////////////////////////////////////// #ifndef INTERFERENCE_MULTITHREAD_H #define INTERFERENCE_MULTITHREAD_H #include <thread> #include <mutex> #include <condition_variable> #include <map> #include <atomic> #include <indk/computer.h> #define indk_MULTITHREAD_DEFAULT_NUM 2 namespace indk { /// \private typedef struct worker { std::vector<void*> objects; std::thread thread; void *event; std::atomic<bool> done; std::mutex m; std::condition_variable cv; } Worker; class ComputeBackendMultithread : public Computer { private: std::vector<indk::Worker*> Workers; std::map<void*, unsigned int> ObjectTable; unsigned int WorkerCount; [[noreturn]] static void tWorker(void*); public: explicit ComputeBackendMultithread(int); void doRegisterHost(const std::vector<void*>&) override; void doUnregisterHost() override; void doWaitTarget() override; void doProcess(void*) override; }; } #endif //INTERFERENCE_MULTITHREAD_H