mirror of
https://github.com/RRQM/TouchSocket.git
synced 2025-12-18 01:16:44 +08:00
refactor(serial): 移除接收锁的异步管理
简化串口流的读取逻辑,直接在异步流情况下读取,减少对锁的管理,可能提高性能
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user