diff --git a/.github/workflows/ReleaseNotes.md b/.github/workflows/ReleaseNotes.md index 64d57698..547962a8 100644 --- a/.github/workflows/ReleaseNotes.md +++ b/.github/workflows/ReleaseNotes.md @@ -3,4 +3,5 @@ * [ManagedClient] The managed client now sends the entire topic filter including new MQTTv5 properties when subscribing. * [Server] Fixed reporting of _MaximumQoS_ in _ConnAck_ packet (MQTTv5 only) (#1442). * [Server] Fix cross thread issue in session message storage for QoS 1 and 2. -* [Server] The event _ClientSubscribedTopicAsync_ is now fired after the subscription is completely processed internally (#1435). \ No newline at end of file +* [Server] The event _ClientSubscribedTopicAsync_ is now fired after the subscription is completely processed internally (#1435). +* [Server] Improved CPU usage on lower end machines (#788). \ No newline at end of file diff --git a/Source/MQTTnet/Server/Internal/MqttClient.cs b/Source/MQTTnet/Server/Internal/MqttClient.cs index b0465dda..6d2f59e1 100644 --- a/Source/MQTTnet/Server/Internal/MqttClient.cs +++ b/Source/MQTTnet/Server/Internal/MqttClient.cs @@ -188,6 +188,8 @@ namespace MQTTnet.Server // own exception in the reading loop! while (!cancellationToken.IsCancellationRequested) { + await Task.Yield(); + var packet = await ChannelAdapter.ReceivePacketAsync(cancellationToken).ConfigureAwait(false); if (packet == null) { @@ -315,6 +317,10 @@ namespace MQTTnet.Server { packetBusItem.MarkAsFailed(exception); } + finally + { + await Task.Yield(); + } } } catch (OperationCanceledException)