mirror of
https://github.com/Expand-sys/CCash
synced 2025-12-17 00:22:14 +11:00
✨ atomic flag
This commit is contained in:
parent
9c426223e9
commit
2ea4d93c10
2 changed files with 12 additions and 7 deletions
|
|
@ -20,16 +20,19 @@ private:
|
||||||
users;
|
users;
|
||||||
|
|
||||||
#if CONSERVATIVE_DISK_SAVE
|
#if CONSERVATIVE_DISK_SAVE
|
||||||
std::atomic<bool> change_flag = false; //if true changes have been made
|
std::atomic_flag change_flag = ATOMIC_FLAG_INIT; //if true changes have been made
|
||||||
|
|
||||||
void ChangesMade() noexcept; //called after making changes
|
void ChangesMade() noexcept; //called after making changes
|
||||||
void ChangesSaved() noexcept; //called after saving
|
void ChangesSaved() noexcept; //called after saving
|
||||||
|
bool GetChangeState() noexcept;
|
||||||
|
|
||||||
#define CHANGES_MADE ChangesMade();
|
#define CHANGES_MADE ChangesMade();
|
||||||
#define CHANGES_SAVED ChangesSaved();
|
#define CHANGES_SAVED ChangesSaved();
|
||||||
|
#define GET_CHANGE_STATE GetChangeState();
|
||||||
#else
|
#else
|
||||||
#define CHANGES_MADE
|
#define CHANGES_MADE
|
||||||
#define CHANGES_SAVED
|
#define CHANGES_SAVED
|
||||||
|
#define GET_CHANGE_STATE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
14
src/bank.cpp
14
src/bank.cpp
|
|
@ -3,21 +3,23 @@
|
||||||
#if CONSERVATIVE_DISK_SAVE
|
#if CONSERVATIVE_DISK_SAVE
|
||||||
void Bank::ChangesMade() noexcept
|
void Bank::ChangesMade() noexcept
|
||||||
{
|
{
|
||||||
while (change_flag.exchange(true, std::memory_order_relaxed))
|
return change_flag.test_and_set();
|
||||||
;
|
|
||||||
std::atomic_thread_fence(std::memory_order_acquire);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bank::ChangesSaved() noexcept
|
void Bank::ChangesSaved() noexcept
|
||||||
{
|
{
|
||||||
std::atomic_thread_fence(std::memory_order_release);
|
return change_flag.clear();
|
||||||
change_flag.store(false, std::memory_order_relaxed);
|
}
|
||||||
|
|
||||||
|
bool Bank::GetChangeState() noexcept
|
||||||
|
{
|
||||||
|
return change_flag.test();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int_fast8_t Bank::AddUser(const std::string &name, const std::string &init_pass) noexcept
|
int_fast8_t Bank::AddUser(const std::string &name, const std::string &init_pass) noexcept
|
||||||
{
|
{
|
||||||
if (name.size() > max_name_size)
|
if (name.size() > max_name _size)
|
||||||
{
|
{
|
||||||
return ErrorResponse::NameTooLong;
|
return ErrorResponse::NameTooLong;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue