summaryrefslogtreecommitdiffstats
path: root/ml/Mutex.h
diff options
context:
space:
mode:
authorvkalintiris <vasilis@netdata.cloud>2023-01-04 14:51:25 +0200
committerGitHub <noreply@github.com>2023-01-04 14:51:25 +0200
commit78359cd375d0b2c285741e6f934a681d0a0c3c15 (patch)
tree2d5264325510b663d9e87ca62a38fad187e3a713 /ml/Mutex.h
parentdf379e45fbaddf825f1f7972a75ae3f3daf80097 (diff)
Refactor ML code and add support for multiple KMeans models (#14198)
* Add profile.plugin Creates the specified number of charts/dimensions, and supports backfilling with pseudo-historical data. * Bump * Remove wrongly merged line. * Use the number of models specified from the config section. * Add option to consult all ML models. * Remove profiling option consuming all models. * Add underscore after chart name prefix. * prediction -> dimensions chart * reorder funcs * Split charts across types with correct priority * Ignore training request when chart is under replication. * Track global number of models consulted. * Cleanup config. * initial readme updates * fix readme * readme * Fix function definition when ML is disabled. * Add dummy ml_chart_update_{begin,end} * Remove profile_plugin * Define chart priorities under collectors/all.h * s/curr_t/current_time/ * Use libnetdata's lock/thread wrappers. * Fix autotools & cmake builds. * Delete ML dimensions & charts. * Let users of buffer preprocessing to handle memory. * Add separate API calls to start/stop ML threads. Co-authored-by: Andrew Maguire <andrewm4894@gmail.com>
Diffstat (limited to 'ml/Mutex.h')
-rw-r--r--ml/Mutex.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/ml/Mutex.h b/ml/Mutex.h
new file mode 100644
index 0000000000..fcdb753135
--- /dev/null
+++ b/ml/Mutex.h
@@ -0,0 +1,36 @@
+#ifndef ML_MUTEX_H
+#define ML_MUTEX_H
+
+#include "ml-private.h"
+
+class Mutex {
+public:
+ Mutex() {
+ netdata_mutex_init(&M);
+ }
+
+ void lock() {
+ netdata_mutex_lock(&M);
+ }
+
+ void unlock() {
+ netdata_mutex_unlock(&M);
+ }
+
+ bool try_lock() {
+ return netdata_mutex_trylock(&M) == 0;
+ }
+
+ netdata_mutex_t *inner() {
+ return &M;
+ }
+
+ ~Mutex() {
+ netdata_mutex_destroy(&M);
+ }
+
+private:
+ netdata_mutex_t M;
+};
+
+#endif /* ML_MUTEX_H */