【发布时间】:2017-09-22 12:49:50
【问题描述】:
我正在开发一个使用游戏手柄的 Xamarin iOS 应用程序,并通过基于客户 TCP 的协议以大约 40 条消息/秒的速率将输入推送到服务器。
什么会产生最佳的应用性能结果;有一个专门的线程发送消息,或者像这样使用 async/await:await WriteAsync(data, 0, data.Length).ConfigureAwait(false)
【问题讨论】:
标签: c# asynchronous tcp
我正在开发一个使用游戏手柄的 Xamarin iOS 应用程序,并通过基于客户 TCP 的协议以大约 40 条消息/秒的速率将输入推送到服务器。
什么会产生最佳的应用性能结果;有一个专门的线程发送消息,或者像这样使用 async/await:await WriteAsync(data, 0, data.Length).ConfigureAwait(false)
【问题讨论】:
标签: c# asynchronous tcp
使用ConfigureAwait(false) 肯定有利有弊。这将允许工作返回到任何可用线程,但会增加context-switch 线程的开销。
但是,如果您的消息传递系统是即发即弃的,并且您的消息由其他进程处理,那么await'ing 您的方法是不必要的。
ConfigureAwait(true)(默认)可以更好地避免上下文切换,记住这些也是硬件相关的。
这可能更好用:When to use ConfigureAwait
【讨论】: