Skip to content

Commit a502709

Browse files
committed
opt(event):优化select引擎去除kHupEvent
1 parent 7ca4f64 commit a502709

File tree

3 files changed

+1
-15
lines changed

3 files changed

+1
-15
lines changed

modules/event/engines/select/fd_event.cpp

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,6 @@ bool SelectFdEvent::enable()
7777
if (events_ & kExceptEvent)
7878
++d_->except_event_num;
7979

80-
if (events_ & kHupEvent)
81-
++d_->hup_event_num;
82-
8380
d_->fd_events.push_back(this);
8481

8582
is_enabled_ = true;
@@ -100,9 +97,6 @@ bool SelectFdEvent::disable()
10097
if (events_ & kExceptEvent)
10198
--d_->except_event_num;
10299

103-
if (events_ & kHupEvent)
104-
--d_->hup_event_num;
105-
106100
auto iter = std::find(d_->fd_events.begin(), d_->fd_events.end(), this);
107101
d_->fd_events.erase(iter);
108102

@@ -137,13 +131,6 @@ void SelectFdEvent::OnEventCallback(bool is_readable, bool is_writable, bool is_
137131

138132
void SelectFdEvent::onEvent(short events)
139133
{
140-
/**
141-
* 由于EPOLLHUP会一直触发,所以无论事件有没有监听HupEvent,只要发生了EPOLLHUB事件,
142-
* 对应fd所有的事件都要强制disable()。否则会导致Loop空跑问题。
143-
*/
144-
if (events & kHupEvent)
145-
disable();
146-
147134
if (events_ & events) {
148135
if (is_stop_after_trigger_)
149136
disable();

modules/event/engines/select/loop.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ int SelectLoop::fillFdSets(fd_set &read_set, fd_set &write_set, fd_set &except_s
123123
is_this_fd_used = true;
124124
}
125125

126-
if (data->except_event_num > 0 || data->hup_event_num > 0) {
126+
if (data->except_event_num > 0) {
127127
FD_SET(fd, &except_set);
128128
is_this_fd_used = true;
129129
}

modules/event/engines/select/types.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ struct SelectFdSharedData {
3535
int read_event_num = 0; //!< 监听可读事件的FdEvent个数
3636
int write_event_num = 0; //!< 监听可写事件的FdEvent个数
3737
int except_event_num = 0; //!< 监听异常事件的FdEvent个数
38-
int hup_event_num = 0; //!< 监听挂起事件的FdEvent个数
3938

4039
std::vector<SelectFdEvent*> fd_events;
4140
};

0 commit comments

Comments
 (0)