[core] extract weak_ptr mailbox->receive into Mailbox::maybeReceive

This commit is contained in:
Mike Morris
2016-10-12 22:32:55 -04:00
parent a894870fb8
commit 7bbd49c72c
5 changed files with 11 additions and 9 deletions

View File

@@ -83,9 +83,7 @@ private:
void schedule(std::weak_ptr<Mailbox> mailbox) override {
invoke([mailbox] () {
if (auto locked = mailbox.lock()) {
locked->receive();
}
Mailbox::maybeReceive(mailbox);
});
}

View File

@@ -22,9 +22,7 @@ ThreadPool::ThreadPool(std::size_t count) {
queue.pop();
lock.unlock();
if (auto locked = mailbox.lock()) {
locked->receive();
}
Mailbox::maybeReceive(mailbox);
}
});
}

View File

@@ -27,9 +27,7 @@ NodeThreadPool::Worker::Worker(std::weak_ptr<mbgl::Mailbox> mailbox_)
mailbox(std::move(mailbox_)) {};
void NodeThreadPool::Worker::Execute() {
if (auto locked = mailbox.lock()) {
locked->receive();
}
mbgl::Mailbox::maybeReceive(mailbox);
}
void NodeThreadPool::Worker::WorkComplete() {

View File

@@ -52,4 +52,10 @@ void Mailbox::receive() {
}
}
void Mailbox::maybeReceive(std::weak_ptr<Mailbox> mailbox) {
if (auto locked = mailbox.lock()) {
locked->receive();
}
}
} // namespace mbgl

View File

@@ -18,6 +18,8 @@ public:
void close();
void receive();
static void maybeReceive(std::weak_ptr<Mailbox>);
private:
Scheduler& scheduler;