revert busy polling

This commit is contained in:
pca006132 2021-05-23 14:07:11 +08:00
parent 1e9a131386
commit 4c743cf8af
1 changed files with 7 additions and 7 deletions

View File

@ -217,13 +217,13 @@ class CommKernel:
def _read(self, length): def _read(self, length):
# cache the reads to avoid frequent call to recv # cache the reads to avoid frequent call to recv
while len(self.read_buffer) < length: while len(self.read_buffer) < length:
while True: # the number is just the maximum amount
try: # when there is not much data, it would return earlier
flag = socket.MSG_DONTWAIT diff = length - len(self.read_buffer)
flag = 0
if diff > 8192:
flag |= socket.MSG_WAITALL
new_buffer = self.socket.recv(8192, flag) new_buffer = self.socket.recv(8192, flag)
break
except BlockingIOError:
pass
if not new_buffer: if not new_buffer:
raise ConnectionResetError("Core device connection closed unexpectedly") raise ConnectionResetError("Core device connection closed unexpectedly")
self.read_buffer += new_buffer self.read_buffer += new_buffer