Basic pool settup
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,2 +1,2 @@
|
||||
.vscode/
|
||||
|
||||
.vs/
|
||||
|
||||
30
CMakeLists.txt
Normal file
30
CMakeLists.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
cmake_minimum_required(VERSION 3.7)
|
||||
Project(libpool)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} CMakeModules/)
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
set(CMAKE_BUILD_TYPE Release)
|
||||
|
||||
set(executable output)
|
||||
set(SrcDIR ./test)
|
||||
set(IncludeDIR ./include)
|
||||
|
||||
include_directories(${executable} ./libpool)
|
||||
|
||||
set(THREADS_PREFER_PTHREAD_FLAD ON)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
file(GLOB SourceFiles
|
||||
${SrcDIR}/*
|
||||
)
|
||||
|
||||
add_executable(${executable} ${SourceFiles})
|
||||
|
||||
set_target_properties(${executable} PROPERTIES
|
||||
CXX_STANDARD 17
|
||||
CXX_EXTENSIONS OFF
|
||||
)
|
||||
|
||||
target_link_libraries(${executable}
|
||||
Threads::Threads
|
||||
)
|
||||
17
CMakeSettings.json
Normal file
17
CMakeSettings.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "RelWithDebInfo",
|
||||
"inheritEnvironments": [
|
||||
"msvc_x64_x64"
|
||||
],
|
||||
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
|
||||
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
|
||||
"cmakeCommandArgs": "",
|
||||
"buildCommandArgs": "-v",
|
||||
"ctestCommandArgs": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
5
libpool/libpool.cpp
Normal file
5
libpool/libpool.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "./libpool.h"
|
||||
|
||||
Pool::Pool(int iNumThreads) {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
#ifndef LIBPOOL_LIBPOOL_H_
|
||||
#define LIBPOOL_LIBPOOL_H_
|
||||
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <queue>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
#include <future>
|
||||
#include <functional>
|
||||
|
||||
class Pool {
|
||||
public:
|
||||
Pool(int iNumThreads = 2);
|
||||
|
||||
void resize(int iNumThreads);
|
||||
|
||||
template<class F, class... Args>
|
||||
auto addToQueue(F&& f, Args&&... args)
|
||||
-> std::future<typename std::result_of<F(Args...)>::type>;
|
||||
|
||||
private:
|
||||
std::vector<std::thread> m_vWorkers;
|
||||
std::queue<std::function<void()>> m_qTaskQueue;
|
||||
|
||||
std::mutex m_mQueueMutex;
|
||||
std::condition_variable m_cCondition;
|
||||
bool m_bStop;
|
||||
|
||||
int m_iThreads = 2;
|
||||
};
|
||||
|
||||
#endif
|
||||
BIN
output.exe
Normal file
BIN
output.exe
Normal file
Binary file not shown.
1
test/build.bat
Normal file
1
test/build.bat
Normal file
@@ -0,0 +1 @@
|
||||
g++ main.cpp ../libpool/*.cpp -I../libpool/ -pthread -o ../output.exe
|
||||
@@ -0,0 +1,9 @@
|
||||
#include <iostream>
|
||||
#include <libpool.h>
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
Pool threadPool { 5 };
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user