我是C#异步编程的新手。总的来说,我理解异步编程的概念,但我并没有完全理解所有的细节,所以我有了这个问题。
public async Task<int> Action1()
{
// ...
}
public Task<int> Action2()
{
// ...
}
编辑:这段代码有意义吗:
public async Task Action1()
{
await someAsyncMethod(); // do nothing with result
}
public Task Action2()
{
return Action1()
}
我喜欢这样想:
>
关键字Async
不修改返回类型。返回类型是如果缺少Async
:Task
。
关键字Async
告诉编译器重写方法的实现,使其异步。在幕后,编译器将把方法转换成状态机,以便异步操作。这也是await
工作的唯一方法。
.method public hidebysig
instance class [System.Private.CoreLib]System.Threading.Tasks.Task`1<int32> Action1 () cil managed
.method public hidebysig
instance class [System.Private.CoreLib]System.Threading.Tasks.Task`1<int32> Action2 () cil managed
不过,还有几个问题/答案试图比我更好地解决这个问题:
在Server程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。 Swoole提供了异步任务处理的功能,可以投递一个异步任务到TaskWorker进程池中执行,不影响当前请求的处理速度。 程序代码 基于第一个TCP服务器,只需要增加onTask和onFinish 2个事件回调函数即可。另外需要设置task
执行器服务具有以下方法: 将来的 但是,由于这个<code>未来</code>的<code>get</code>方法将始终返回<code>null</code>以下签名是否更合适? <代码>未来
null my Library的核心逻辑 客户将使用我们的库,他们将通过传递builder对象来调用它。然后,我们将通过使用对象构造一个URL,并通过执行该对象对该URL进行HTTP客户端调用,在将响应作为JSON字符串返回后,我们将通过创建对象将该JSON字符串按原样发送给客户。有些客户会调用,有些可能会调用方法,所以我需要在库中分别提供两个方法。 接口: 您将如何实现同步和异步方法给定上述标准
问题内容: Java中的同步方法和同步块有什么区别? 我一直在网上搜索答案,人们似乎对此不太确定:-( 我的看法是,两者之间没有区别,只是synch块的作用域可能更多,因此锁定的时间更少了? 如果在静态方法上使用Lock,则采用什么Lock?班级锁是什么意思? 问题答案: 同步方法将方法接收器用作锁(即,用于非静态方法,而用于静态方法的封闭类)。 blocks将表达式用作锁。 因此,以下两种方法等
问题内容: 可以说我们有以下两个示例代码: 还有这个 所以有人可以告诉我现在有什么区别吗? 问题答案: 这两种不同的方法在 功能上是等效的 。有 可能 是一个非常小的 性能 差异: 在字节码级别,作为方法访问标记中设置的位, 同步方法 公布其同步需求。JVM查找该位标志并进行适当同步。 该 同步块 通过存储在该方法的类文件中的字节码定义的操作序列实现其同步。 因此,同步方法 可能会以 更快的速度执
问题内容: 我一直在对此进行一些研究,但至少可以说我还是很困惑。 谁能给我一个何时使用以及何时使用的具体示例;?到底有什么区别?何时使用这些方法是否有黄金法则? 如果我错了,也可以纠正我,但是这两个“对象”不是在GUI主线程内(用于更新GUI)创建另一个线程的方法吗? 问题答案: 使用快速和简单的操作和复杂的和大的操作。 用例 用例中的任务示例 示例:为什么我们不能用于长计算(摘自以下参考资料)。