Remove now unneeded wait_generation.
This commit is contained in:
parent
3b6874818a
commit
62720bde3c
@ -108,15 +108,13 @@ class ActorInfo final
|
||||
bool need_context() const;
|
||||
bool need_start_up() const;
|
||||
|
||||
void set_wait_generation(uint32 wait_generation);
|
||||
bool must_wait(uint32 wait_generation) const;
|
||||
bool must_wait() const;
|
||||
|
||||
private:
|
||||
Deleter deleter_ = Deleter::None;
|
||||
bool need_context_ = true;
|
||||
bool need_start_up_ = true;
|
||||
bool is_running_ = false;
|
||||
uint32 wait_generation_{0};
|
||||
|
||||
std::atomic<int32> sched_id_{0};
|
||||
Actor *actor_ = nullptr;
|
||||
|
@ -50,7 +50,6 @@ inline void ActorInfo::init(int32 sched_id, Slice name, ObjectPool<ActorInfo>::O
|
||||
need_context_ = need_context;
|
||||
need_start_up_ = need_start_up;
|
||||
is_running_ = false;
|
||||
wait_generation_ = 0;
|
||||
}
|
||||
|
||||
inline bool ActorInfo::need_context() const {
|
||||
@ -61,12 +60,8 @@ inline bool ActorInfo::need_start_up() const {
|
||||
return need_start_up_;
|
||||
}
|
||||
|
||||
inline void ActorInfo::set_wait_generation(uint32 wait_generation) {
|
||||
wait_generation_ = wait_generation;
|
||||
}
|
||||
|
||||
inline bool ActorInfo::must_wait(uint32 wait_generation) const {
|
||||
return wait_generation_ == wait_generation || !mailbox_.empty();
|
||||
inline bool ActorInfo::must_wait() const {
|
||||
return !mailbox_.empty();
|
||||
}
|
||||
|
||||
inline void ActorInfo::on_actor_moved(Actor *actor_new_ptr) {
|
||||
|
@ -200,8 +200,6 @@ class Scheduler {
|
||||
template <ActorSendType send_type, class RunFuncT, class EventFuncT>
|
||||
void send_impl(const ActorId<> &actor_id, const RunFuncT &run_func, const EventFuncT &event_func);
|
||||
|
||||
void inc_wait_generation();
|
||||
|
||||
Timestamp run_timeout();
|
||||
void run_mailbox();
|
||||
Timestamp run_events(Timestamp timeout);
|
||||
@ -231,7 +229,6 @@ class Scheduler {
|
||||
bool has_guard_ = false;
|
||||
bool close_flag_ = false;
|
||||
|
||||
uint32 wait_generation_ = 1;
|
||||
int32 sched_id_ = 0;
|
||||
int32 sched_n_ = 0;
|
||||
std::shared_ptr<MpscPollableQueue<EventFull>> inbound_queue_;
|
||||
|
@ -497,7 +497,6 @@ void Scheduler::run_mailbox() {
|
||||
ListNode *node = actors_list.get();
|
||||
CHECK(node);
|
||||
auto actor_info = ActorInfo::from_list_node(node);
|
||||
inc_wait_generation();
|
||||
flush_mailbox(actor_info, static_cast<void (*)(ActorInfo *)>(nullptr), static_cast<Event (*)()>(nullptr));
|
||||
}
|
||||
VLOG(actor) << "Run mailbox : finish " << actor_count_;
|
||||
@ -526,7 +525,6 @@ Timestamp Scheduler::run_timeout() {
|
||||
while (!timeout_queue_.empty() && timeout_queue_.top_key() < now) {
|
||||
HeapNode *node = timeout_queue_.pop();
|
||||
ActorInfo *actor_info = ActorInfo::from_heap_node(node);
|
||||
inc_wait_generation();
|
||||
send<ActorSendType::Immediate>(actor_info->actor_id(), Event::timeout());
|
||||
}
|
||||
return get_timeout();
|
||||
|
@ -191,10 +191,6 @@ inline void Scheduler::before_tail_send(const ActorId<> &actor_id) {
|
||||
// TODO
|
||||
}
|
||||
|
||||
inline void Scheduler::inc_wait_generation() {
|
||||
wait_generation_ += 2;
|
||||
}
|
||||
|
||||
template <ActorSendType send_type, class RunFuncT, class EventFuncT>
|
||||
void Scheduler::send_impl(const ActorId<> &actor_id, const RunFuncT &run_func, const EventFuncT &event_func) {
|
||||
ActorInfo *actor_info = actor_id.get_actor_info();
|
||||
@ -210,7 +206,7 @@ void Scheduler::send_impl(const ActorId<> &actor_id, const RunFuncT &run_func, c
|
||||
CHECK(has_guard_ || !on_current_sched);
|
||||
|
||||
if (likely(send_type == ActorSendType::Immediate && on_current_sched && !actor_info->is_running() &&
|
||||
!actor_info->must_wait(wait_generation_))) { // run immediately
|
||||
!actor_info->must_wait())) { // run immediately
|
||||
if (likely(actor_info->mailbox_.empty())) {
|
||||
EventGuard guard(this, actor_info);
|
||||
run_func(actor_info);
|
||||
@ -220,9 +216,6 @@ void Scheduler::send_impl(const ActorId<> &actor_id, const RunFuncT &run_func, c
|
||||
} else {
|
||||
if (on_current_sched) {
|
||||
add_to_mailbox(actor_info, event_func());
|
||||
if (send_type == ActorSendType::Later) {
|
||||
actor_info->set_wait_generation(wait_generation_);
|
||||
}
|
||||
} else {
|
||||
send_to_scheduler(actor_sched_id, actor_id, event_func());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user