小编Jaa*_*rus的帖子

协程是Unity3D中的新线程吗?

关于协同程序(在Unity3D和其他地方)如何工作,我感到困惑和好奇.coroutine是新线程吗?他们说Unity的文档:

协程是一个可以暂停执行(yield)直到给定的YieldInstruction完成的函数.

他们在这里有C#示例:

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
    void Start() {
        print("Starting " + Time.time);
        StartCoroutine(WaitAndPrint(2.0F));
        print("Before WaitAndPrint Finishes " + Time.time);
    }
    IEnumerator WaitAndPrint(float waitTime) {
        yield return new WaitForSeconds(waitTime);
        print("WaitAndPrint " + Time.time);
    }
}
Run Code Online (Sandbox Code Playgroud)

我对这个例子有很多疑问:

  1. 在上面的例子中,哪一行是协程?是WaitAndPrint()一个协程?是WaitForSeconds()一个协程?

  2. 在这一行:yield return new WaitForSeconds(waitTime);为什么都yieldreturn存在?我在Unity文档中读到"yield语句是一种特殊的返回,它确保函数将在下次调用yield语句后继续执行." 如果yield是特别的return,return这里做了什么?

  3. 为什么我们要退货IEnumerator

  4. 是否StartCoroutine开始新线程?

  5. WaitAndPrint() …

c# coroutine unity-game-engine

22
推荐指数
1
解决办法
2万
查看次数

Angular 2 - 替换$ scope.$ apply?

$scope.$apply 将不再是Angular 2的一部分.那么,如果在常规角度执行上下文之外更改了任何绑定属性,我们如何让Angular知道更新DOM?

摘自Minko Gechev的博客文章:

没有更多$ scope.$ apply

但是AngularJS怎么知道它的执行环境之外的任何东西都取而代之?让我们思考一下变化的来源:

  • 的setTimeout
  • 的setInterval
  • 提示(是的,有人还在使用它......)
  • XMLHttpRequest的
  • 的WebSockets

  • ...

答案是:

在此输入图像描述

我知道修补浏览器内置的javascript函数以通知Angular的任何更改都可以以相对安全的方式完成(不会引入细微的错误)并且对开发人员来说非常方便.但是第三方API(例如jQuery.fadeIn)或浏览器是否公开了一些未涵盖的新异步API呢?什么是旧的替代品$scope.$apply

javascript angularjs-scope angular

21
推荐指数
2
解决办法
1万
查看次数

什么是变形,在C#中看起来如何?

我试图围绕变形的概念.

在函数式编程中,anamorphism是对列表展开概念的概括.形式上,anamorphisms是泛型函数,它们可以共同构造某种类型的结果,并通过确定构造的下一个单一步骤的函数进行参数化.


它的双重,同态,在这篇文章中有很好的描述:什么是catamorphism并且可以在C#3.0中实现?.

一个很好的C#中的变形行为的例子是LINQ的Aggregate方法.


变形等价物会是什么?将伪随机数生成器Random视为变形结构或者展开过程是否总是包含如下所示的累加器函数(从Intro到Rx的代码片段)是否正确?

IEnumerable<T> Unfold<T>(T seed, Func<T, T> accumulator)
{
    var nextValue = seed;
    while (true)
    {
        yield return nextValue;
        nextValue = accumulator(nextValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# functional-programming catamorphism anamorphism recursion-schemes

9
推荐指数
1
解决办法
1112
查看次数

为什么SQL标准允许重复行?

关系模型的核心规则之一是元组(行)所需的唯一性:

通过指定包含表的名称,包含列的名称和包含行的主键值,数据库中的每个单独标量值都必须在逻辑上可寻址.

在SQL世界中,这意味着表中永远不会存在两行,所有列值都相等.如果没有有意义的方法来保证唯一性,则可以向表格提供代理键.

当第一个SQL标准发布时,它没有定义这样的限制,从那时起它就像这样.这似乎是所有邪恶的根源.

是否有任何有意义的理由决定采用这种方式?在实际的世界中,没有这种限制可以证明是有用的吗?它是否超过缺点?

sql relational-database

8
推荐指数
2
解决办法
3737
查看次数

如何抽象出浏览器窗口对象的用法?

window在使用Aurelia框架时,如何抽象出浏览器对象的使用?我想在使用诸如setInterval或等功能时避免直接依赖浏览器addEventListener.

Aurelia有一个名为Platform Abstraction Library的东西,理论上它应该提供我正在寻找的功能.但是,在撰写此问题时,我找不到任何有关它的文档.

javascript dependency-injection aurelia

6
推荐指数
1
解决办法
734
查看次数

C#``按原样''与``按原样''+转换性能

当我偶然发现“空类型”一章中的一段时,我正在阅读乔恩·斯基特的“ C#in depth”第二版:

令人惊讶的性能陷阱我一直以为执行一次检查要快于两次检查,但事实并非如此-至少对于我测试过的.NET版本而言。在编写一个快速基准测试时,使用“ is”对“ object []”类型的数组中的所有整数进行求和,其中只有三分之一的值实际上是装箱的整数,然后强制转换最终比使用“” 快20倍作为'运算符。

乍一看,我认为编译器可能足够聪明,可以优化使用'is'+ cast时发生的双重类型检查,但事实并非如此。用/ OPTIMIZE标志打开的用32位编译器编译的.NET 4.0代码仍然导致两个MSIL'isinst'调用。

对于在直观上应该相反的情况下,如此巨大的性能差异可能有何解释?

.net c# performance

5
推荐指数
0
解决办法
1208
查看次数

为什么引用和值类型的集合之间的Enumerable Min或Max不一致?

在处理序列时,我很惊讶地发现minmax的行为是不同的,具体取决于源集合元素是值类型还是引用类型:

var refCollection = new object[0];
var valCollection = new int[0];
var nullableCollection = new int?[0];

var refMin = refCollection.Min(x => x); // null
var valMin = valCollection.Min(); // InvalidOperationException
var nullableMin = nullableCollection.Min(); // null
Run Code Online (Sandbox Code Playgroud)

Enumerable扩展的.NET Core实现中很好地看到了这种行为差异.

然而,当看到Jon Skeet的MinBy扩展时,情况就不是这样了,例如,正如我所预期的那样抛出任何一种情况.

行为上的差异不会导致混淆吗?返回nullref类型集合有什么好处吗?

.net c# linq

5
推荐指数
1
解决办法
125
查看次数

如何将自定义异常抛出到正在运行的任务中

我试图弄清楚是否有可能将自定义异常抛出到正在运行的 asyncio 任务中,类似于在底层协程中引发的Task.cancel(self)调度 a所实现的CancelledError

我遇到了Task.get_coro().throw(exc),但调用它似乎打开了一大罐蠕虫,因为我们可能会使任务处于不良状态。尤其是考虑到任务CancelledError投入协程时发生的所有机制。

考虑以下示例:

import asyncio

class Reset(Exception):
    pass

async def infinite():
    while True:
        try:
            print('work')
            await asyncio.sleep(1)
            print('more work')
        except Reset:
            print('reset')
            continue
        except asyncio.CancelledError:
            print('cancel')
            break

async def main():
    infinite_task = asyncio.create_task(infinite())
    await asyncio.sleep(0)  # Allow infinite_task to enter its work loop.
    infinite_task.get_coro().throw(Reset())
    await infinite_task

asyncio.run(main())

## OUTPUT ##
# "work"
# "reset"
# "work"
# hangs forever ... bad :(
Run Code Online (Sandbox Code Playgroud)

我尝试做的甚至可行吗?感觉好像我不应该像这样操纵底层协程。任何解决方法?

python python-3.x python-asyncio

5
推荐指数
1
解决办法
221
查看次数

着色器资源视图使用哪种格式进入深度模板缓冲区资源?

深度模板缓冲区资源被定义为DXGI_FORMAT_D24_UNORM_S8_UINT格式。


我会假设要在该资源中创建着色器资源视图 (SRV) 需要将视图格式描述为:

  • DXGI_FORMAT_R24_UNORM_X8_TYPELESS 红色通道访问深度值的地方
  • DXGI_FORMAT_R24G8_TYPELESS 其中红色通道访问深度和绿色通道模板值

但是,创建此类 SRV 失败并出现以下错误:

D3D12 ERROR: ID3D12Device::CreateShaderResourceView: 对于资源格式 D24_UNORM_S8_UINT,在制作 D3D 视图时,视图的格式名称不能为 R24_UNORM_X8_TYPELESS。请参阅有关此资源格式的有效视图格式名称集的文档,以确定资源(或其一部分)将如何显示给着色器。[ STATE_CREATION 错误 #28:CREATESHADERRESOURCEVIEW_INVALIDFORMAT]

查看API 文档给我以下信息:

查看资源时,资源视图描述必须指定与资源格式兼容的类型化格式。所以这意味着您不能使用名称中带有 _TYPELESS 的任何格式创建资源视图描述。但是,您可以通过为视图指定类型格式来查看无类型资源。


我真的不明白为什么一个无类型的格式是不允许哪种格式我应该改用

dxgi directx-12 direct3d12

4
推荐指数
1
解决办法
1626
查看次数

顺序执行期货集合

我有一个期货集合,我想合并为一个单一的期货,以使它们按顺序执行。

我调查了该futures_ordered功能。它似乎按顺序返回结果,但期货同时执行。

我尝试fold将期货与结合使用and_then。但是,这对于类型系统来说是棘手的。

let tasks = vec![ok(()), ok(()), ok(())];

let combined_task = tasks.into_iter().fold(
    ok(()),                             // seed
    |acc, task| acc.and_then(|_| task), // accumulator
);
Run Code Online (Sandbox Code Playgroud)

操场

这给出了以下错误:

let tasks = vec![ok(()), ok(()), ok(())];

let combined_task = tasks.into_iter().fold(
    ok(()),                             // seed
    |acc, task| acc.and_then(|_| task), // accumulator
);
Run Code Online (Sandbox Code Playgroud)

我可能正在解决这个错误,但是我的想法已经用完了。

future rust

4
推荐指数
2
解决办法
1287
查看次数

允许 AWS 组访问 AWS EKS 集群

这个问题本质上是Adding IAM Group to aws-auth configmap in AWS EKS的重复。但是,这个问题没有公认的答案,我想提供更多背景信息。

我知道aws-authConfigMap 对象不允许直接映射 AWS 组。解决方法是映射 AWS 角色。我尝试过,但无法让它工作。映射 AWS 用户可以正常工作。

我将 AWS 角色设置arn:aws:iam::027755483893:role/development-readwrite027755483893受信任实体,并附加了以下信任策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::027755483893:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我设置了一个 AWS 组arn:aws:iam::027755483893:group/development-readwrite并附加了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::027755483893:role/development-readwrite"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我按如下方式设置aws-authConfigMap:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-iam amazon-eks

4
推荐指数
1
解决办法
931
查看次数