Skip to content

Commit ede77b0

Browse files
committed
fix starvation by adding pause to read/recv
1 parent 8c54654 commit ede77b0

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed

src/pipe/moon.pkg.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"import": [
33
"moonbitlang/async/os_error",
4-
"moonbitlang/async/internal/event_loop"
4+
"moonbitlang/async/internal/event_loop",
5+
"moonbitlang/async"
56
],
6-
"test-import": [ "moonbitlang/async" ],
77
"native-stub": [ "stub.c" ]
88
}

src/pipe/pipe.mbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ pub async fn PipeRead::read(
137137
@event_loop.wait_fd_read(fd)
138138
read_ffi(fd, buf, offset, max_len)
139139
} else {
140+
@async.pause()
140141
n_read
141142
}
142143
if n_read < 0 {

src/socket/moon.pkg.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"import": [
33
"moonbitlang/async/os_error",
4-
"moonbitlang/async/internal/event_loop"
4+
"moonbitlang/async/internal/event_loop",
5+
"moonbitlang/async"
56
],
6-
"test-import": [ "moonbitlang/async" ],
77
"native-stub": [ "socket.c" ]
88
}

src/socket/tcp.mbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ pub async fn TCP::recv(
132132
@event_loop.wait_fd_read(sock)
133133
recv_ffi(sock, buf, offset, max_len)
134134
} else {
135+
@async.pause()
135136
n_read
136137
}
137138
if n_read < 0 {

0 commit comments

Comments
 (0)