Naf*_*ema 3 asynchronous wso2 reactive-programming ballerina
我刚刚通过阅读https://ballerina.io/文档开始关注芭蕾舞女演员。当我尝试运行 Hello World Parallel 时,我不知道它在内部是如何工作的?
import ballerina/io;
public function main() {
@strand {thread: "any"}
worker w1 {
io:println("Hello, World! #m");
}
@strand {thread: "any"}
worker w2 {
io:println("Hello, World! #n");
}
@strand {thread: "any"}
worker w3 {
io:println("Hello, World! #k");
}
}
Run Code Online (Sandbox Code Playgroud)
Ballerina 在 VM 启动时配置的线程池上运行。线程计数可通过环境变量进行配置BALLERINA_MAX_POOL_SIZE,当未明确提供时,它将默认为线程计数 =(逻辑 CPU 计数 X 2)。
Ballerina 运行时调度程序在预先配置的线程池上工作,它与本地线程没有一一对应的关系,控制流(通常称为线程)称为 a strand,许多链将映射到单个 OS 线程。这是非常相似的green threads,user level threads或项目织机纤维。
你得到的只是轻量级线程。
据我了解,响应式编程是为了驯服复杂异步系统编程带来的复杂性而开发的,类似于响应式编程,Ballerina 支持另一种使用异步等待风格(类似于 C#)编写异步系统的方法https://ballerina .io/learn/by-example/async.html
大多数 Ballerina 库都是非阻塞的(不阻塞 OS 线程),这意味着使用该库的 Ballerina 程序看起来像使用直接阻塞代码编写的代码,但在幕后,它们由 Ballerina 调度器进行多路复用。因此,如果您指的是反应式编程范式,那么不是,但是如果您指的是非阻塞性和简单性(没有回调等),那么是的。
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |