};
public:
- IsUpOracle()
+ IsUpOracle(): d_checkerThreadStarted(ATOMIC_FLAG_INIT)
{
}
~IsUpOracle()
SharedLockGuarded<statuses_t> d_statuses;
std::unique_ptr<std::thread> d_checkerThread;
+ std::atomic_flag d_checkerThreadStarted;
void setStatus(const CheckDesc& cd, bool status)
{
bool IsUpOracle::isUp(const CheckDesc& cd)
{
- if (!d_checkerThread) {
+ if (!d_checkerThreadStarted.test_and_set()) {
d_checkerThread = std::make_unique<std::thread>([this] { return checkThread(); });
}
time_t now = time(nullptr);