Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:25
erlang
0161-Adjust-language-around-the-usage-of-receiv...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0161-Adjust-language-around-the-usage-of-receive-in-a-gen.patch of Package erlang
From 222ea7783fc70d65943aff08c310026fcf60dbfb Mon Sep 17 00:00:00 2001 From: Bryan Paxton <bryan@starbelly.io> Date: Sun, 11 Sep 2022 15:02:30 -0500 Subject: [PATCH 1/8] Adjust language around the usage of receive in a gen_statem. - Change can not to should not and give a brief explanation of why one should not use a receive in a gen_* process. --- system/doc/design_principles/statem.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/system/doc/design_principles/statem.xml b/system/doc/design_principles/statem.xml index c53d569c99..7a8d9cee46 100644 --- a/system/doc/design_principles/statem.xml +++ b/system/doc/design_principles/statem.xml @@ -1912,9 +1912,14 @@ do_unlock() -> to implicitly postpone any events to the <c>locked</c> state. </p> <p> - A selective receive cannot be used from a <c>gen_statem</c> + A receive should not be used from a <c>gen_statem</c> behaviour (or from any <c>gen_*</c> behaviour), as the receive statement is within the <c>gen_*</c> engine itself. + Doing so without taking all cases into consideration could result + in system messages being discarded leading to unexpected behaviour. + Even if all cases are taken into consideration the recvieve would + still block system messages from arriving in a timely manor or + indefinitely if a timeout is not provided. It must be there because all <seeerl marker="stdlib:sys"><c>sys</c></seeerl> compatible behaviours must respond to system messages and therefore -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor