From 881df9d9363c17e3e22b1fb327a5502af11849fb Mon Sep 17 00:00:00 2001 From: cadem Date: Fri, 2 Feb 2024 13:47:11 +0800 Subject: [PATCH] windows atomic --- source/libs/monitorfw/inc/taos_metric_sample_t.h | 6 ++++++ source/libs/monitorfw/src/taos_metric_sample.c | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/source/libs/monitorfw/inc/taos_metric_sample_t.h b/source/libs/monitorfw/inc/taos_metric_sample_t.h index 62d58c5b9f..6ebc000df5 100644 --- a/source/libs/monitorfw/inc/taos_metric_sample_t.h +++ b/source/libs/monitorfw/inc/taos_metric_sample_t.h @@ -21,6 +21,8 @@ #if !defined(WINDOWS) #define C11_ATOMIC +#else +//#define DOUBLE_ATOMIC #endif #ifdef C11_ATOMIC @@ -33,7 +35,11 @@ struct taos_metric_sample { #ifdef C11_ATOMIC _Atomic double r_value; /**< r_value is the value of the metric sample */ #else +#ifdef DOUBLE_ATOMIC double r_value; /**< r_value is the value of the metric sample */ +#else + int64_t r_value; +#endif #endif }; diff --git a/source/libs/monitorfw/src/taos_metric_sample.c b/source/libs/monitorfw/src/taos_metric_sample.c index c3f948434d..ca6ea30028 100644 --- a/source/libs/monitorfw/src/taos_metric_sample.c +++ b/source/libs/monitorfw/src/taos_metric_sample.c @@ -81,7 +81,11 @@ int taos_metric_sample_add(taos_metric_sample_t *self, double r_value) { } } #else +#ifdef DOUBLE_ATOMIC atomic_fetch_add_double(&self->r_value, r_value); +#else + atomic_fetch_add_64(&self->r_value, r_value); +#endif #endif return 0; @@ -103,7 +107,11 @@ int taos_metric_sample_sub(taos_metric_sample_t *self, double r_value) { } } #else +#ifdef DOUBLE_ATOMIC atomic_fetch_sub_double(&self->r_value, r_value); +#else + atomic_fetch_sub_64(&self->r_value, r_value); +#endif #endif return 0; @@ -118,7 +126,11 @@ int taos_metric_sample_set(taos_metric_sample_t *self, double r_value) { #ifdef C11_ATOMIC atomic_store(&self->r_value, r_value); #else +#ifdef DOUBLE_ATOMIC atomic_store_double(&self->r_value, r_value); +#else + atomic_store_64(&self->r_value, r_value); +#endif #endif return 0; @@ -140,7 +152,11 @@ int taos_metric_sample_exchange(taos_metric_sample_t *self, double r_value, doub } } #else +#ifdef DOUBLE_ATOMIC *old_value = atomic_exchange_double(&self->r_value, r_value); +#else + *old_value = atomic_exchange_64(&self->r_value, r_value); +#endif #endif return 0;