refactor(serial): 移除接收锁的异步管理

简化串口流的读取逻辑,直接在异步流情况下读取,减少对锁的管理,可能提高性能
This commit is contained in:
若汝棋茗
2025-06-22 22:19:52 +08:00
parent ca90a45014
commit 3f8dc5a761

View File

@@ -121,20 +121,11 @@ internal class SerialCore : DisposableObject, IValueTaskSource<SerialOperationRe
{
// 如果是异步流,则使用异步读取方式
var token = this.m_cancellationTokenSource.Token;
await this.m_receiveLock.WaitAsync(token).ConfigureAwait(EasyTask.ContinueOnCapturedContext);
try
{
var stream = this.m_serialPort.BaseStream;
var length = Math.Min(this.m_receiveBufferSize, byteBlock.Capacity);
var memory = byteBlock.TotalMemory;
var r = await stream.ReadAsync(memory, token).ConfigureAwait(EasyTask.ContinueOnCapturedContext);
this.m_receiveCounter.Increment(r);
return new SerialOperationResult(r, SerialData.Chars);
}
finally
{
this.m_receiveLock.Release();
}
var stream = this.m_serialPort.BaseStream;
var memory = byteBlock.TotalMemory;
var r = await stream.ReadAsync(memory, token).ConfigureAwait(EasyTask.ContinueOnCapturedContext);
this.m_receiveCounter.Increment(r);
return new SerialOperationResult(r, SerialData.Chars);
}
else
{