Lab4b 实验解析
tinyCoroLab4b 实验解析
git clone https://github.com/sakurs2/tinyCoro📖lab4b 任务参考实现
🧑💻Task #1 - 实现 latch
class latch
{
public:
using event_t = event<>;
latch(std::uint64_t count) noexcept : m_count(count), m_ev(count <= 0) {}
latch(const latch&) = delete;
latch(latch&&) = delete;
auto operator=(const latch&) -> latch& = delete;
auto operator=(latch&&) -> latch& = delete;
auto count_down() noexcept -> void
{
if (m_count.fetch_sub(1, std::memory_order::acq_rel) <= 1)
{
m_ev.set();
}
}
auto wait() noexcept -> event_t::awaiter { return m_ev.wait(); }
private:
std::atomic<std::int64_t> m_count;
event_t m_ev;
};实验总结
Last updated