- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用 Parallel Linq 等系统, 可以在一台机器上跨多个内核和线程拆分匿名函数、查询等的执行。我希望能够使用标准语言结构(例如 for 循环(如 Parallel.For()
))、值类型(如 int
)将其扩展为在多台机器上运行、struct
等,并将应用程序源代码修改保持在最低限度。理想情况下,这将允许我打开一个项目,向方法添加一个属性,然后重新编译以获得对增强功能的访问。
看来我需要以下内容:
能够捕获已编译的代码块(例如 lambda)并将其连同所需的任何数据一起传递给在另一个节点上运行的工作进程,或者
提供一个预处理器来捕获有问题的代码,将其编译成一种模板项目,该模板项目将替换变量引用等,并引用一个类来处理网络通信、缓存和访问任何其他所需的 Assets ,并将生成的 DLL 发送到在其他机器上运行的任何可用工作节点。
Roslyn似乎提供了一些在这里有用的工具。有没有办法连接到当前的编译管道以允许这样做?
编辑
好的,我知道这是可能的,because these guys did it .问题是,如何?
最佳答案
Using systems such as Parallel Linq, it's possible to split up execution of anonymous functions, queries, etc across multiple cores and threads within a single machine. I'd like the ability to extend this to run across multiple machines using standard language constructs such as for loops (like Parallel.For()), value types like ints, structs, etc., and keep the application source modifications to a minimum.
听起来不错。事实上,我们有一个与 Microsoft Research 非常相似的系统,但显然我无法讨论细节。
I need the ability to capture a compiled block of code (such as a lambda) and pass it to a worker process running on another node, along with any data that is required
好的,你明白了。我们将该功能添加到 C# 3。这就是 LINQ to SQL 的工作原理。 不知何故 LINQ 查询必须进入数据库。编译后的 lambda 在客户端机器上被询问,转换为发送到服务器节点的查询,然后将结果发回。
Roslyn appears to provide some tools that would be useful here. Is there way to hook into the current compilation pipeline to allow this?
这不是 Roslyn 的目的; Roslyn 并不是要向 C# 语言添加新功能。它旨在让分析代码以构建诸如重构引擎之类的东西变得更加容易。
您不需要连接到编译管道。 PLINQ 不改变编译器,LINQ to SQL 不改变编译器,等等。当您将 lambda 转换为表达式树时,编译器会发出代码,在运行时创建一个表示 lambda 的表达式树。您可以查询该表达式树,将其序列化到您网络中的另一台机器,反序列化它,将其转换为委托(delegate)并运行它(如果您喜欢这样做的话)。
您可能需要编写自己的表达式树序列化器和反序列化器,但它们是非常简单的数据结构。作为一棵不可变树应该使它们很容易序列化和反序列化;它们不能真正形成复杂的网络,因为它们总是从叶节点向上构建。
关于c# - 实现 C# 语言扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659588/
我是 magento 的新手,目前我在 magento 安装期间遇到“必须加载 PHP 扩展 curl ”错误。你能帮帮我吗? 最佳答案 如果您的服务器上没有安装 curl,您可以键入以下命令之一来安
我在 macOS Mojave/macOS Big Sur/macOS Monterey/macOS Ventura 上使用最新的 php 版本 7.2 并收到类似错误 $composer requ
这个问题已经有答案了: Why generic type is not applicable for argument extends super class for both? (5 个回答) 已关
我正在使用 NightWatch.js 并进行一些 UI 测试,我想用一些额外的 desiredCapabilities 启动默认浏览器实例(即启用扩展并应用一些特定值)。 p> 注意:我可以执行这些
有人知道为什么我在 java 8 中使用此代码时没有服务器扩展名称吗: try { URL url = new URL(urlString); URLC
扩展提供给我的类(class)。为现有的类提供新功能。或扩展现有的mixin s 或虚拟类,任何东西都可以工作。 也许是这样的: class FlatButton {} // maybe no
我有一个关于使用 c 代码和 mod_wsgi 扩展 python 的问题。 我在 apache 服务器中有一个 django 应用程序,它查询 postgresql 数据库以生成报告。在某些报告中,
testcafe支持在Chrome浏览器中加载crx扩展吗? 如果是这样,请告诉我需要尝试什么方法。 我尝试了下面的代码,但没有成功 await t.eval(new Function(fs.read
这个问题已经有答案了: What is a raw type and why shouldn't we use it? (16 个回答) 已关闭 3 年前。 有什么区别: // 1 class A c
我正在编写一个 chrome 扩展来记录单击开始按钮后触发的请求。 这是我的文件:1. list .json { "manifest_version": 2, "name": "recorde
我每天都在使用 vim 和 perforce 现在我的问题是,如果我想查看 perforce 文件修订版,则从命令模式下的 vim :!p4 打印文件#1 vim 试图让我获得缓冲区 #1。有没有办法
大家好,我有一个关于 NUnit 扩展(2.5.10)的问题。 我想做的是向 数据库。为此,我使用 Event 创建了 NUnit 扩展 听众。 我遇到的问题是公共(public)无效 TestFin
我有弹出窗口,而不是模态窗口。 如何通过单击页面的其他部分(不在窗口中)来关闭此窗口? 最佳答案 像这样的东西: function closeWin(e, t) { var el = win.
我通常非常谨慎地使用扩展方法。当我确实觉得有必要编写一个扩展方法时,有时我想重载该方法。我的问题是,您对调用其他扩展方法的扩展方法有何看法?不好的做法?感觉不对,但我无法真正定义原因。 例如,第二个
扩展 Ant Ant带有一组预定义的任务,但是你可以创建自己的任务,如下面的例子所示。 定制Ant 任务应扩展 org.apache.tools.ant.Task 类,同时也应该拓展 execut
我想要一个重定向所有请求的扩展: http://website.com/foo.js 到: http://localhost/myfoo.js 我无法使用主机文件将主机从 website.com 编辑
对于为什么 QChartView 放在 QTabWidget 中时会扩展,我有点迷惑。 这是 QChartView 未展开(因为它被隐藏)时应用程序的图片。 应用程序的黑色部分是 QOpenGLWid
如果在连接条件中使用 OR 运算符,如何优化以下查询以避免 SQL 调优方面的 OR 扩展? SELECT t1.A, t2.B, t1.C, t1.D, t2.E FROM t1 LEFT J
一旦加载插件的问题得到解决(在 .NET 中通过 MEF 的情况下),下一步要解决的是与它们的通信。简单的方法是实现一个接口(interface),使用插件实现,但有时插件只需要扩展应用程序的工作方式
在我的 Symfony2 包中,我需要检查是否定义了一个函数(一个扩展)。更具体地说,如果安装了 KnpMenuBundle,我会在我的包中使用那个,否则我将自己渲染插件。 我试过了,但这当然不起作用
我是一名优秀的程序员,十分优秀!