Loading system/gd/os/linux_generic/queue.tpp +7 −12 Original line number Diff line number Diff line Loading @@ -15,8 +15,7 @@ */ template <typename T> Queue<T>::Queue(size_t capacity) : enqueue_(capacity), dequeue_(0){}; Queue<T>::Queue(size_t capacity) : enqueue_(capacity), dequeue_(0){}; template <typename T> Queue<T>::~Queue() { Loading Loading @@ -49,8 +48,8 @@ void Queue<T>::RegisterDequeue(Handler* handler, DequeueCallback callback) { ASSERT(dequeue_.handler_ == nullptr); ASSERT(dequeue_.reactable_ == nullptr); dequeue_.handler_ = handler; dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); } template <typename T> Loading Loading @@ -82,14 +81,10 @@ std::unique_ptr<T> Queue<T>::TryDequeue() { template <typename T> void Queue<T>::EnqueueCallbackInternal(EnqueueCallback callback) { enqueue_.reactive_semaphore_.Decrease(); { std::unique_ptr<T> data = callback(); ASSERT(data != nullptr); std::lock_guard<std::mutex> lock(mutex_); enqueue_.reactive_semaphore_.Decrease(); queue_.push(std::move(data)); } dequeue_.reactive_semaphore_.Increase(); } Loading
system/gd/os/linux_generic/queue.tpp +7 −12 Original line number Diff line number Diff line Loading @@ -15,8 +15,7 @@ */ template <typename T> Queue<T>::Queue(size_t capacity) : enqueue_(capacity), dequeue_(0){}; Queue<T>::Queue(size_t capacity) : enqueue_(capacity), dequeue_(0){}; template <typename T> Queue<T>::~Queue() { Loading Loading @@ -49,8 +48,8 @@ void Queue<T>::RegisterDequeue(Handler* handler, DequeueCallback callback) { ASSERT(dequeue_.handler_ == nullptr); ASSERT(dequeue_.reactable_ == nullptr); dequeue_.handler_ = handler; dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); dequeue_.reactable_ = dequeue_.handler_->reactor_->Register(dequeue_.reactive_semaphore_.GetFd(), [callback] { callback(); }, nullptr); } template <typename T> Loading Loading @@ -82,14 +81,10 @@ std::unique_ptr<T> Queue<T>::TryDequeue() { template <typename T> void Queue<T>::EnqueueCallbackInternal(EnqueueCallback callback) { enqueue_.reactive_semaphore_.Decrease(); { std::unique_ptr<T> data = callback(); ASSERT(data != nullptr); std::lock_guard<std::mutex> lock(mutex_); enqueue_.reactive_semaphore_.Decrease(); queue_.push(std::move(data)); } dequeue_.reactive_semaphore_.Increase(); }