tearshark пре 4 година
родитељ
комит
cbeefbba2e
3 измењених фајлова са 10 додато и 10 уклоњено
  1. 1
    1
      librf/src/counted_ptr.h
  2. 7
    7
      librf/src/macro_def.inl
  3. 2
    2
      librf/src/state.h

+ 1
- 1
librf/src/counted_ptr.h Прегледај датотеку

@@ -101,7 +101,7 @@ namespace resumef
private:
void _unlock()
{
if (_p != nullptr)
if (likely(_p != nullptr))
{
auto t = _p;
_p = nullptr;

+ 7
- 7
librf/src/macro_def.inl Прегледај датотеку

@@ -16,18 +16,18 @@
#define root_state() (co_await ::resumef::get_root_state())
#define current_task() (co_await ::resumef::get_current_task())

#ifdef _MSC_VER
#if defined(__clang__) || defined(__GNUC__)
#ifndef likely
#define likely(x) x
#define likely(x) __builtin_expect(!!(x), 1)
#endif // likely
#ifndef unlikely
#define unlikely(x) x
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif // unlikely
#else // _MSC_VER
#else // defined(__clang__) || defined(__GNUC__)
#ifndef likely
#define likely(x) __builtin_expect(!!(x), 1)
#define likely(x) x
#endif // likely
#ifndef unlikely
#define unlikely(x) __builtin_expect(!!(x), 0)
#define unlikely(x) x
#endif // unlikely
#endif // _MSC_VER
#endif // defined(__clang__) || defined(__GNUC__)

+ 2
- 2
librf/src/state.h Прегледај датотеку

@@ -13,11 +13,11 @@ namespace resumef
public:
void lock() noexcept
{
++_count;
_count.fetch_add(1, std::memory_order_acq_rel);
}
void unlock()
{
if (--_count == 0)
if (unlikely(_count.fetch_sub(1, std::memory_order_acq_rel) == 1))
{
destroy_deallocate();
}

Loading…
Откажи
Сачувај