Default to a single receive thread on Windows

This works around a termination issue on Windows caused by the process
sometimes being unable to send a packet to itself to wake up a thread
stuck in a blocking read on a socket.

Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
Erik Boasson 2020-01-22 10:41:02 +01:00 committed by eboasson
parent 263d8016b8
commit bb76798492
7 changed files with 75 additions and 34 deletions

View file

@ -344,7 +344,7 @@ sub conv_to_rnc {
} elsif ($fs->{kstr} eq "Enum") {
die unless exists $enum_values{$fs->{typehint}};
my @vs = split /;/, $enum_values{$fs->{typehint}};
printf $fh "${indent} ${sep}%s\n", (join '|', map { "\"$_\"" } @vs);
printf $fh "${indent} ${sep}(%s)\n", (join '|', map { "\"$_\"" } @vs);
} elsif ($fs->{kstr} eq "Int") {
printf $fh "${indent} ${sep}xsd:integer\n";
#if (exists $range{$lctn} || exists $range{$fs->{typehint}}) {

View file

@ -903,15 +903,17 @@ The default value is: "-1".
#### //CycloneDDS/Domain/Internal/MultipleReceiveThreads
Attributes: [maxretries](#cycloneddsdomaininternalmultiplereceivethreadsmaxretries)
Boolean
One of: false, true, default
This element controls whether all traffic is handled by a single receive
thread or whether multiple receive threads may be used to improve
latency. Currently multiple receive threads are only used for
connectionless transport (e.g., UDP) and ManySocketsMode not set to
single (the default).
thread (false) or whether multiple receive threads may be used to improve
latency (true). By default it is disabled on Windows because it appears
that one cannot count on being able to send packets to oneself, which is
necessary to stop the thread during shutdown. Currently multiple receive
threads are only used for connectionless transport (e.g., UDP) and
ManySocketsMode not set to single (the default).
The default value is: "true".
The default value is: "default".
#### //CycloneDDS/Domain/Internal/MultipleReceiveThreads[@maxretries]