threadman 0.1.0
Header-only C++23 managed threads, dynamic pools, futures, and executors
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1#pragma once
2
19
20// Platform detection -------------------------------------------------------
21#if defined(__linux__)
22#define THREADMAN_PLATFORM_LINUX 1
23#define THREADMAN_PLATFORM_APPLE 0
24#define THREADMAN_PLATFORM_OTHER 0
25#elif defined(__APPLE__)
26#define THREADMAN_PLATFORM_LINUX 0
27#define THREADMAN_PLATFORM_APPLE 1
28#define THREADMAN_PLATFORM_OTHER 0
29#else
30#define THREADMAN_PLATFORM_LINUX 0
31#define THREADMAN_PLATFORM_APPLE 0
32#define THREADMAN_PLATFORM_OTHER 1
33#endif
34
35// nlohmann/json integration ------------------------------------------------
36#if !defined(THREADMAN_WITH_NLOHMANN_JSON)
37#if defined(__has_include)
38#if __has_include(<nlohmann/json.hpp>)
39#define THREADMAN_WITH_NLOHMANN_JSON 1
40#else
41#define THREADMAN_WITH_NLOHMANN_JSON 0
42#endif
43#else
44#define THREADMAN_WITH_NLOHMANN_JSON 0
45#endif
46#endif
47
48// cpp-parcel integration ---------------------------------------------------
49#if !defined(THREADMAN_WITH_PARCEL)
50#if defined(__has_include)
51#if __has_include(<parcel/parcel.h>)
52#define THREADMAN_WITH_PARCEL 1
53#else
54#define THREADMAN_WITH_PARCEL 0
55#endif
56#else
57#define THREADMAN_WITH_PARCEL 0
58#endif
59#endif
60
61// Tunable defaults ---------------------------------------------------------
62
65#if !defined(THREADMAN_RECENT_TASKS_CAPACITY)
66#define THREADMAN_RECENT_TASKS_CAPACITY 256
67#endif
68
70#if !defined(THREADMAN_DEFAULT_POOL_NAME)
71#define THREADMAN_DEFAULT_POOL_NAME "tm::default"
72#endif
73
76#if !defined(THREADMAN_DEFAULT_SCALE_UP_WAIT_MS)
77#define THREADMAN_DEFAULT_SCALE_UP_WAIT_MS 50
78#endif
79
82#if !defined(THREADMAN_DEFAULT_IDLE_TIMEOUT_MS)
83#define THREADMAN_DEFAULT_IDLE_TIMEOUT_MS 30000
84#endif
85
87#if !defined(THREADMAN_DEFAULT_SCALE_UP_QUEUE_THRESHOLD)
88#define THREADMAN_DEFAULT_SCALE_UP_QUEUE_THRESHOLD 4
89#endif
90
92#if !defined(THREADMAN_DEFAULT_SCALE_CHECK_INTERVAL_MS)
93#define THREADMAN_DEFAULT_SCALE_CHECK_INTERVAL_MS 100
94#endif
95
97#if !defined(THREADMAN_DEFAULT_STUCK_TASK_THRESHOLD_MS)
98#define THREADMAN_DEFAULT_STUCK_TASK_THRESHOLD_MS 60000
99#endif
100
102#if !defined(THREADMAN_DEFAULT_SUMMARY_INTERVAL_MS)
103#define THREADMAN_DEFAULT_SUMMARY_INTERVAL_MS 1000
104#endif
105
109#if !defined(THREADMAN_DEFAULT_FUTURE_WAIT_SCALE_UP_WAIT_MS)
110#define THREADMAN_DEFAULT_FUTURE_WAIT_SCALE_UP_WAIT_MS 10
111#endif