小编Ati*_*ifm的帖子

你如何在C++中实现Coroutines

我怀疑它可以移植,但有没有解决方案?我认为可以通过创建备用堆栈并在功能输入上重置SP,BP和IP,并使产量保存IP并恢复SP + BP来完成.析构函数和异常安全看起来很棘手但可以解决.

它完成了吗?这不可能吗?

c++ coroutine c++17

64
推荐指数
8
解决办法
5万
查看次数

为什么没有将产量添加到C++ 0x?

我在许多Python程序中都使用了yield,在很多情况下它确实清除了代码.我在博客上写了这篇文章,这是我网站的热门网页之一.

C#还提供了收益 - 它通过调用者端的状态保持来实现,通过自动生成的类来完成,该类保持状态,函数的局部变量等.

我目前正在阅读有关C++ 0x及其添加的内容; 在阅读有关C++ 0x中lambda的实现时,我发现它也是通过自动生成的类完成的,配备了存储lambda代码的operator().我心中形成了一个自然的问题:他们是为lambdas做过的,他们为什么不考虑支持"收益"呢?

当然,他们可以看到合作例程的价值......所以我只能猜测他们认为基于宏的实现(例如Simon Tatham的)是一个充分的替代品.然而,它们不是出于多种原因:被调用者保持状态,非重入状态,基于宏观(仅此一点是足够的理由)等.

编辑: yield不依赖于垃圾收集,线程或光纤.您可以阅读Simon的文章,看看我在谈论编译器进行简单的转换,例如:

int fibonacci() {
    int a = 0, b = 1;
    while (true) {
        yield a;
        int c = a + b;
        a = b;
        b = c;
    }
}
Run Code Online (Sandbox Code Playgroud)

成:

struct GeneratedFibonacci {
    int state;
    int a, b;

    GeneratedFibonacci() : state (0), a (0), b (1) {}

    int operator()() {
        switch (state) {
        case 0:
            state = 1;
            while (true) { …
Run Code Online (Sandbox Code Playgroud)

c++ yield c++11 c++17

30
推荐指数
4
解决办法
9139
查看次数

Amazon S3存储桶策略:如何锁定仅对您的EC2实例的访问

我希望锁定一个S3存储桶用于安全目的 - 我将部署映像存储在存储桶中.

我想要做的是创建一个存储桶策略,该策略支持通过http 从我帐户中的EC2实例进行匿名下载.

有没有办法做到这一点?

我正在尝试使用的策略示例(它不允许自己应用):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::[my bucket name]",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:ec2:us-east-1:[my account id]:instance/*"
        }
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

amazon amazon-s3 amazon-ec2 amazon-web-services

8
推荐指数
1
解决办法
3850
查看次数