acl/lib_fiber/cpp/include/fiber/fiber_sem.hpp
zhengshuxin fbf37b7237 remove master_base.hpp from master_fiber.hpp;
remove lib_acl.h from lib_fiber.h;
2017-07-27 18:16:39 +08:00

41 lines
530 B
C++

#pragma once
struct ACL_FIBER_SEM;
namespace acl {
class fiber_sem
{
public:
fiber_sem(int max);
~fiber_sem(void);
int wait(void);
int trywait(void);
int post(void);
private:
ACL_FIBER_SEM* sem_;
fiber_sem(const fiber_sem&);
const fiber_sem& operator=(const fiber_sem&);
};
class fiber_sem_guard
{
public:
fiber_sem_guard(fiber_sem& sem) : sem_(sem)
{
(void) sem_.wait();
}
~fiber_sem_guard(void)
{
sem_.post();
}
private:
fiber_sem& sem_;
};
} // namespace acl