当我写异步方法时:
public class myGameLoop
{
protected class GameObject
{
....
}
protected GameObject [] myGameObjects;
public async Task myMethod()
{
myPrologue(); //runs on caller thread 1
await SomeLongOperation().ConfigureAwait(false); //runs on thread 2
myContinuation(); //maybe on thread 2 or another one from pool
}
}
我的连续 () 有可能不在同一线程中执行,而不是我的序幕 ()。想象一下,调用方线程是游戏的绘制线程。然后,如果我的Prologue()从myGameObjects数组中更改了非原子对象,并且myContinuation()也使用它们,那么我们就可以从2个线程到对象/数组进行非同步访问,这可能会损坏它们。
是真的还是异步/等待在这种情况下有一些同步的东西?或者我应该避免使用ConfigureAwait(false)?(我不确定有多少线程可以具有单游戏绘制线程同步上下文,所以我将ConfigureWait设置为false以防止意外死锁)。
(我不确定有多少线程可以有Monogame绘图线程同步上下文,所以我将配置等待设置为false以防止意外死锁)。
我认为这是误解。如果绘制线程有自己的同步上下文,专门针对该线程,那么如果您使用普通的await
,它将在该绘制线程上恢复。在我看来,这就是您想要的。
配置等待(false)
的原因不是为了“防止意外死锁”。它只是通知等待
您不关心您需要恢复的上下文。因此,如果您确实关心恢复的上下文,那么当然不应该使用配置等待(false)
。
更多信息请查看我的< code>async介绍博客。
问题内容: 我已经搜索了很多,但找不到特定的解决方案。关于stackoverflow也有一些问题,但我无法找到满意的答案,所以我再次询问。 我在java中有一个如下类。 我知道如何在Java中使用线程。 现在我想同时执行这两个操作。为此,我创建了两个线程类,一个在运行中执行addString()逻辑,另一个在执行deleteString()逻辑中。我在每个线程的构造函数中传递mylist,但是在对
现在我的问题是:关键字对这种情况有用吗?
本文向大家介绍C#中线程同步对象的方法分析,包括了C#中线程同步对象的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#中线程同步对象的方法。分享给大家供大家参考。具体分析如下: 在编写多线程程序时无可避免会遇到线程的同步问题。什么是线程的同步呢? 举个例子:如果在一个公司里面有一个变量记录某人T的工资count=100,有两个主管A和B(即工作线程)在早一些时候拿了这个变量的值
在参考Flutter教程时,我遇到了一个下划线。 null
问题内容: 假设我有一个与field共享的对象。多个线程将共享对该对象的引用以访问该字段。但是,线程永远不会同时访问对象。我需要声明为volatile吗? 这样的情况如下: 一个类定义一个唯一字段和一个方法。 一个线程使计数器递增,然后生成另一个使计数器递增的线程,依此类推。 鉴于程序的逻辑,因此无法并发访问计数器。但是,计数器是在多个线程之间共享的。计数器必须波动吗? 的情况的另一个变体是当多个
我已经面临这个问题很多天了,请帮我解决。我正在使用线程同步实现生产者-消费者示例。我在这个传统节目中做了一些调整。我没有只使用一个队列对象,而是使用了两个队列对象。但程序不起作用。。(PS-我知道我可以通过只使用队列的一个对象来让这个程序工作,但如果我想使用两个队列对象呢??) 类队列{ } 类生产者实现Runnable{ } 类消费者实现可运行{ } 公共类测试队列{ }