acl/lib_acl/include/stdlib/acl_atomic.h

92 lines
3.1 KiB
C
Raw Normal View History

#ifndef ACL_ATOMIC_INCLUDE_H
#define ACL_ATOMIC_INCLUDE_H
#ifdef __cplusplus
extern "C"
{
#endif
#include "acl_define.h"
typedef struct ACL_ATOMIC ACL_ATOMIC;
2017-08-13 22:41:35 +08:00
/**
*
* @return {ACL_ATOMIC*}
*/
ACL_API ACL_ATOMIC *acl_atomic_new(void);
2017-08-13 22:41:35 +08:00
/**
*
* @param self {ACL_ATOMIC*}
*/
ACL_API void acl_atomic_free(ACL_ATOMIC *self);
/**
* 便
* @param self {ACL_ATOMIC*}
* @param value {void*}
*/
ACL_API void acl_atomic_set(ACL_ATOMIC *self, void *value);
/**
*
*
* @param self {ACL_ATOMIC*}
* @param cmp {void*}
* @param value {void*}
* @return {void*}
*/
ACL_API void *acl_atomic_cas(ACL_ATOMIC *self, void *cmp, void *value);
2017-08-13 22:41:35 +08:00
/**
*
* @param self {ACL_ATOMIC*}
* @param value {void*}
* @return {void*}
*/
ACL_API void *acl_atomic_xchg(ACL_ATOMIC *self, void *value);
2017-08-13 22:41:35 +08:00
/**
* acl_atomic_set
*
* @param self {ACL_ATOMIC*}
* @param n {long long}
*/
2017-06-22 12:21:54 +08:00
ACL_API void acl_atomic_int64_set(ACL_ATOMIC *self, long long n);
2017-08-13 22:41:35 +08:00
/**
*
* @param self {ACL_ATOMIC*}
* @param n {long long}
* @return {long long}
*/
2017-06-22 11:03:07 +08:00
ACL_API long long acl_atomic_int64_fetch_add(ACL_ATOMIC *self, long long n);
2017-08-13 22:41:35 +08:00
/**
*
* @param self {ACL_ATOMIC*}
* @param n {long long}
* @return {long long}
*/
2017-06-22 11:03:07 +08:00
ACL_API long long acl_atomic_int64_add_fetch(ACL_ATOMIC *self, long long n);
2017-08-13 22:41:35 +08:00
/****************************************************************************/
typedef struct ACL_ATOMIC_CLOCK ACL_ATOMIC_CLOCK;
ACL_API ACL_ATOMIC_CLOCK *acl_atomic_clock_alloc(void);
ACL_API void acl_atomic_clock_free(ACL_ATOMIC_CLOCK *clk);
ACL_API long long acl_atomic_clock_count_add(ACL_ATOMIC_CLOCK *clk, int n);
ACL_API long long acl_atomic_clock_users_add(ACL_ATOMIC_CLOCK *clk, int n);
ACL_API void acl_atomic_clock_users_count_inc(ACL_ATOMIC_CLOCK *clk);
ACL_API long long acl_atomic_clock_count(ACL_ATOMIC_CLOCK *clk);
ACL_API long long acl_atomic_clock_atime(ACL_ATOMIC_CLOCK *clk);
ACL_API long long acl_atomic_clock_users(ACL_ATOMIC_CLOCK *clk);
#ifdef __cplusplus
}
#endif
#endif