* use a more flexible amount of threads
* fix windows compile and 0 thread case
* nominmax
-
-
#include <iostream>
#include <fstream>
#include <sstream>
#include <sys/types.h>
#ifdef _WIN32
+ #define NOMINMAX
#include <windows.h>
#include <direct.h> // For _mkdir on Windows
#else
compile_count_guard acquire_compile_slot() {
// wait until fewer than N compiles are in progress.
// 16 is an arbitrary limit, the goal is to avoid "failed to create pipe" errors.
- uint32_t N = 16;
+ uint32_t N = std::max(1u, std::min(16u, std::thread::hardware_concurrency()));
std::unique_lock<std::mutex> guard(compile_count_mutex);
compile_count_cond.wait(guard, [N] { return compile_count < N; });
compile_count++;