runtime: use fast path when channel has been closed and empty#77526
runtime: use fast path when channel has been closed and empty#77526delichik wants to merge 1 commit intogolang:masterfrom
Conversation
|
This PR (HEAD: 812beeb) has been imported to Gerrit for code review. Please visit Gerrit at https://go-review.googlesource.com/c/go/+/743781. Important tips:
|
|
Message from Gopher Robot: Patch Set 1: (1 comment) Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Jorropo: Patch Set 1: Commit-Queue+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Go LUCI: Patch Set 1: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2026-02-10T14:50:01Z","revision":"9781d0e1ceeff3dd894dfe296d3078d5460f876f"} Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Jorropo: Patch Set 1: -Commit-Queue (Posted by golang-scoped@luci-project-accounts.iam.gserviceaccount.com on behalf of jorropo.pgm@gmail.com) Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Go LUCI: Patch Set 1: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Go LUCI: Patch Set 1: LUCI-TryBot-Result+1 Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Michael Pratt: Patch Set 1: Code-Review+1 Commit-Queue+1 (6 comments) Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Go LUCI: Patch Set 1: Dry run: CV is trying the patch. Bot data: {"action":"start","triggered_at":"2026-02-24T00:00:03Z","revision":"9781d0e1ceeff3dd894dfe296d3078d5460f876f"} Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Michael Pratt: Patch Set 1: -Commit-Queue (Performed by golang-scoped@luci-project-accounts.iam.gserviceaccount.com on behalf of mpratt@google.com) Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
|
Message from Go LUCI: Patch Set 1: This CL has passed the run Please don’t reply on this GitHub thread. Visit golang.org/cl/743781. |
update #77522
Check channel emptiness in recv regardless of blocking mode. If the channel is empty and already closed, recheck emptiness and allow recv to return immediately without entering the lock.
This improves receive performance on closed channels and also benefits cgocallback performance. The side effect is that normal blocking receives perform one additional empty() check, but this cost is negligible compared to acquiring the lock.