Skip to content

Commit 5519066

Browse files
committed
when no event available, yield if CPU isn't spinning
1 parent 386705e commit 5519066

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

include/slick/socket/tcp_server_unix.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,11 @@ void TCPServerBase<DerivedT>::server_loop()
358358
{
359359
if (errno == EINTR)
360360
{
361+
if (config_.cpu_affinity < 0)
362+
{
363+
// CPU isn't spinning
364+
std::this_thread::yield();
365+
}
361366
continue;
362367
}
363368
LOG_ERROR("epoll_wait failed: {}", std::strerror(errno));

include/slick/socket/tcp_server_win32.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,11 @@ void TCPServerBase<DrivedT>::server_loop()
278278
{
279279
if (errno == EINTR)
280280
{
281+
if (config_.cpu_affinity < 0)
282+
{
283+
// CPU isn't spinning
284+
std::this_thread::yield();
285+
}
281286
continue;
282287
}
283288
LOG_ERROR("epoll_wait failed: {}", WSAGetLastError());

0 commit comments

Comments
 (0)