问题标签 [dart-isolates]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dart - 如何编写一个使用 spawnUri 并同时使用 Dartium 和 dart2js 的 Dart Web 应用程序?
我想编写一个并发网络应用程序(使用原始工人或隔离作为工人)。用于隔离的 Dart API 是spawnUri
,它接受一个指向脚本的 URI。
在 Dartium 中,该脚本是一个.dart
文件。在 Chrome/Firefox/etc 中,该脚本是一个.dart.js
文件。
我需要检测我所处的运行时,以便spawnUri
正确配置 URI。做这个的最好方式是什么?
dart - 需要 Dart 镜像实例化()函数
为了给我的生活增添一些理智,寻找Dart库 instantiate()
中作为语法糖的功能:mirror
instantiate( class|type|instance, argArray )
目前,我与之交互的 90%mirrors
都将被这一功能覆盖。目前出于愚蠢而盲目地剪切和复制。当然,比我聪明的人已经这样做了!
这里适用instantiate( type, [constructor, positional, named] )
于所有场合:
- 构造函数、位置和命名的参数都是可选的
- type 可以是
Type
, 实例化类型, 或该类型的字符串表示 - 构造函数:例如,new Map.from(...) - 'from' 是构造函数,'from' 或 #from
- 位置:列表中的位置参数
- named: 命名 Map 中的参数,键可以是 'key' 或 #key
dart - 使用 IndexedDB 在 Isolate 之间共享内存
我现在正在使用 Isolates,想知道使用 IndexedDB 在 Isolates 之间共享数据是否是一种很好的沟通方式?具体来说,我希望一个 Isolate 能够写入它,然后告诉其他 Isolate 他们可以只读它。这些数据一旦被写入就会被认为是不变的并且相当大。我想这样做的主要原因是因为我不想将 6MB 映射发送到 3 个不同的 Isolate,因为它对程序有点密集。
dart - dart vm send back stream from isolate
there is similar question (how to process a HTTP stream with Dart) about processing streams in dart2js. I am focused on vm.
I can read from spec that:
The content of message can be: primitive values (null, num, bool, double, String), instances of SendPort, and lists and maps whose elements are any of these. List and maps are also allowed to be cyclic.
In the special circumstances when two isolates share the same code and are running in the same process (e.g. isolates created via spawn), it is also possible to send object instances (which would be copied in the process). This is currently only supported by the dartvm. For now, the dart2js compiler only supports the restricted messages described above.
I ve learnt I cannot send to isolates and back following objects: HttpRequest and HttpResponse objects, I cannot send streams.
Q: I cannot really understand how should I process big chunk of data in isolate and then send it back to main isolate and in turn it can be send back to client.
Normally if I want to read a file. I can obtain a stream, apply transforms and then pipe a stream to http response. what is best practice to do that using isolates?
thanks for help!
dart - Dart Isolate vs Akka
据我了解,Dart 隔离就像 Akka 演员。
但是,我想不通的是,是否有dart:isolate
类似的目的Akka
。两者之间有根本区别吗?
演员模型编程的dart:isolate
框架就像?Akka
是不是dart:isolate
更类似于 scala 演员而不是 akka。
dart - Dart 动态类加载
我想用 Dart 构建一个应用服务器。dart:io 库中的 httpServer 无疑是一个很好的起点。但是我很难在不重新启动服务器进程的情况下“部署”应用程序。
更准确地说:我希望在 Java 中拥有类似 servlet 容器的东西,比如 Tomcat,我可以轻松地在其中部署或重新部署应用程序,而无需重新启动容器。我想我可以利用镜像系统,它原则上允许我从文件系统加载一个库及其包含的类。但不幸的是,我似乎无法重新加载库。例如,当我向库中添加新类或更改现有类的编码时,库的新反射而不重新启动 dart 进程不会反映更改。只有当我停止该过程并再次重新启动它时,更改才可见。
那么:有没有办法在同一个 Dart 进程中清理镜像系统并让它再次加载库及其类?
dart - 如何在飞镖中产生新的孤立?
目前 Dart 隔离有什么问题吗?查看大多数人看起来正在使用spawnIsolate
或spawnFunction
开始运行新隔离的一些过去的 stackoverflow 问题,但这些方法似乎不再存在,在当前的隔离库中也没有明显的替代品。此外,当关注链接时,人们在之前的 stackoverflow 中提出了有关隔离的问题,他们似乎已从官方文档中删除,例如. 如何启动隔离?
dart - Dart:使用 html 导入时隔离不起作用
我在 Dart 中发现了这种非常奇怪和不幸的行为。当我在主文件中导入“dart:html”时,我的 Isolate 停止工作。
使用我的文件“isolate.dart”:
这将打印“BAM”:
但这什么也没打印:
如何在使用 html 导入时让 Isolate 工作?
更新:我找到了此代码https://github.com/TomCaserta/ExampleIsolate并尝试使用它来查找问题。似乎来自 Isolate 的 print() 调用引起了问题。
routing - Dart 多服务器中的端口转发请求 // 隔离处理程序
如果我有 4 个 Dart 服务器正在运行并且我想转发请求,我将如何在 Dart 中执行此操作?一方面,我希望有效地对请求做出反应,但也能够以不同的方式处理某些请求,或者在某处处理来自某个城市的 IP。所以我评估了一个会话 ID 并说这个会话应该由 server2:1234 提供服务,这意味着理想情况下响应将由该服务器打印,而不是通过 server1:80 路由所有内容,因为这会大量消耗 server1:80 的可用性
在“hello world”数字中:
server1:80 可以服务 aprox:8000 req/sec
4 个服务器可以服务 aprox:15-20000 req/sec(使用 nginx 作为前端)
隔离无法处理 httprequests afaik 我需要解析/降级隔离的请求,这更糟糕。
2个问题:
如何在不阻塞主实例的情况下转发请求?
(如使用 nginx 负载平衡)
我怎样才能理想地将请求路由到隔离?
(我发现的任何示例要么已过时,要么使用了我不喜欢的模式:为每个请求生成隔离...不是一个好主意。我宁愿在隔离中动态创建服务器实例并在那里转发请求)
我看到的主要问题是,您不共享内存,所以问题是,是否甚至可以在没有重复副本的情况下路由任何数据。如果服务器在不同的机器上运行,您将产生严重的流量开销。我猜最好有一种动态标头重定向/重写的方法。但即使如此,我也需要在端口 80 上说 4-16 个“线程”以提高效率。飞镖不可能实现 Afaik。最好的办法是什么?
我真的很感谢这里的帮助。
更新
使用此补丁:
https
://codereview.chromium.org/250513002/
您实际上可以实现与旧补丁类似的并行服务器进程:
https ://codereview.chromium.org/25511002/
在这两种情况下,您都在同一个端口上侦听,但在两种情况下,您可以只运行另一个进程并重用该端口,而在一种情况下,您可以在隔离中运行进程并共享一个 ServerSocketReference。
旧补丁需要一些调整,但最终使用新的 SDK,我至少可以摆脱 nginx。保存 nginx 代理通行证可以多提供 10-20% 的 hello world 请求。使用 2 个并行进程,我实现了大约 140% 的性能,而使用 3 和 4,它只有 145%。但是在我的笔记本电脑上总共大约 10k req/sec 这很好(也说明我们只想在这里死于美丽;))
这是高度实验性的,没有人知道它将来会如何工作。我推荐第一个补丁,因为它似乎是更清洁的方法。
这是我希望早先找到的基本示例:)
UPDATE == 现在可与 SDK 1.4 一起使用