fix scoped_refptr
This commit is contained in:
@@ -3,6 +3,21 @@
|
||||
#include <iostream>
|
||||
|
||||
namespace sled {
|
||||
|
||||
class ScopedAtomicWaiter {
|
||||
public:
|
||||
ScopedAtomicWaiter(std::atomic_bool &flag) : flag_(flag)
|
||||
{
|
||||
bool old = flag_.load();
|
||||
while (!flag_.compare_exchange_weak(old, false)) { continue; }
|
||||
}
|
||||
|
||||
~ScopedAtomicWaiter() { flag_.store(true); }
|
||||
|
||||
private:
|
||||
std::atomic_bool &flag_;
|
||||
};
|
||||
|
||||
void
|
||||
Log(LogLevel level,
|
||||
const char *tag,
|
||||
@@ -12,6 +27,8 @@ Log(LogLevel level,
|
||||
const char *func_name,
|
||||
...)
|
||||
{
|
||||
static std::atomic_bool allow(true);
|
||||
ScopedAtomicWaiter waiter(allow);
|
||||
int len = file_name ? strlen(file_name) : 0;
|
||||
while (len > 0 && file_name[len - 1] != '/') { len--; }
|
||||
|
||||
|
@@ -30,9 +30,9 @@ Event::Reset()
|
||||
bool
|
||||
Event::Wait(TimeDelta give_up_after, TimeDelta warn_after)
|
||||
{
|
||||
MutexLock lock(&mutex_);
|
||||
MutexLock guard(&mutex_);
|
||||
bool wait_success =
|
||||
cv_.WaitFor(lock, give_up_after, [&] { return event_status_; });
|
||||
cv_.WaitFor(guard, give_up_after, [&] { return event_status_; });
|
||||
if (!wait_success) { return false; }
|
||||
|
||||
if (!is_manual_reset_) { event_status_ = false; }
|
||||
|
Reference in New Issue
Block a user