Napa.js

基于 V8 的多线程 JavaScript 运行环境
授权协议 MIT
开发语言 C/C++ JavaScript
所属分类 Web应用开发、 服务器端JavaScript
软件类型 开源软件
地区 不详
投 递 者 孟均
操作系统 跨平台
开源组织 微软
适用人群 未知
 软件概览

Napa.js 是微软开源的一个基于 V8 的多线程 JavaScript 运行环境。它最初被设计用于在 Bing 中开发不影响性能的高度迭代服务, 随着发展,Napa.js 被发现在 CPU-bound 任务中能有效补充 Node.js ,具备在多个 V8 隔离中执行 JavaScript 并在它们之间进行通信的能力。 Napa.js 作为一个 Node.js 的模块公开,它也可以嵌入到没有 Node.js 依赖关系的主机进程中。

概括来讲,Node.js 是异步的,JS 代码执行和事件通知运行在一个线程中,JS 代码中的耗时操作会挤占事件轮询的 CPU 时间。Napa.js 的出现,很好的对这个缺陷进行了补充,将 JS 执行和事件轮询拆分到不同的线程中。

Quick Start

var napa = require('napajs');
var zone1 = napa.zone.create('zone1', { workers: 4} );

// Broadcast code to all 4 workers in 'zone1'.
zone1.broadcast('console.log("hello world");');

// Execute an anonymous function in any worker thread in 'zone1'.
zone1.execute(
    (text) => {
        return text;
    }, 
    ['hello napa'])
    .then((result) => {
        console.log(result.value);
    });
  • 生产者/消费者问题 多生产者和多消费者 多个生产者向一个缓冲区中存入数据,多个生产者从缓冲区中取数据。这是有界缓冲区问题,队列改写,生产者之间、消费者之间、生产者消费者之间互相互斥。 共享缓冲区作为一个环绕缓冲区,存数据到尾时再从头开始。 我们使用一个互斥量保护生产者向缓冲区中存入数据。由于有多个生产者,因此需要记住现在向缓冲区中存入的位置。 使用一个互斥量保护缓冲区中消息的数目,这个生产的数据数

  • Napa.js Napa.js是一个基于V8的多线程JavaScript运行时环境,它起初被设计用于在Bing中开发不影响性能的高度迭代服务。随着开发的深入,我们发现Napa.js能有效补足Node.js在CPU-bound任务上的不足,而且拥有在多个V8隔离中执行JavaScript代码并进行相互通信的能力。虽然Napa.js是Node.js的一个模块,但是它也能嵌入没有Node.js依赖的主机

  • 原文地址:github.com/Microsoft/n… 译者:沈毅 前言:微软最近发布的多线程JavaScript运行时,Napa.js非常受大家关注。译者也非常感兴趣,跟进的同时做一些翻译。 2007年7月17,根据 Tim Berners-Lee的最优效率原则(Rule of Least Power),Atwood提出了一个可以写入JavaScript历史的伍兹定律:任何可以用JavaScr

  • 使用Web的1种语言进行数据科学的利弊 (The pros and cons of using the web’s 1 language for data science) If you have been following the tech landscape in recent years, you have probably noticed at least two things. 如果您

 相关资料
  • 问题内容: 我正在编写Node插件,尝试从C ++工作线程调用V8函数对象时遇到问题。 我的插件基本上是启动一个C std :: thread并使用WaitForSingleOject()进入一个等待循环,这是由另一个C 应用程序(一个X- Plane插件)向共享内存中写入数据触发的。我试图让我的Node插件在发出Windows共享事件信号时唤醒,然后调用我从node应用程序注册的JavaScri

  • 我在学习多线程时发现对象的速度变慢了。hashCode在多线程环境中,因为对于相同数量的对象,计算运行4个线程的默认哈希代码要比运行1个线程的默认哈希代码花费两倍的时间。 但根据我的理解,并行完成这项工作也需要类似的时间。 您可以更改线程数。每个线程都有相同的工作量,因此您希望在我的四核机器上运行4个线程可能需要与运行单个线程相同的时间。 我看到4x大约2.3秒,但是。1x为9秒。 我的理解是否有

  • 本文向大家介绍JavaScript多线程运行库Nexus.js详解,包括了JavaScript多线程运行库Nexus.js详解的使用技巧和注意事项,需要的朋友参考一下 首先,如果你不熟悉这个项目,建议先阅读之前写的一系列文章。如果你不想阅读这些,不用担心。这里面也会涉及到那些内容。 现在,让我们开始吧。 去年,我开始实现Nexus.js,这是一个基于Webkit/JavaScript内核的多线程服

  • 我创建了一个多线程步骤,最大线程限制为10; 在处理了200万条记录文件后,我可以在日志文件中看到创建的线程太多,即使我将限制设置为10个线程。你能告诉我为什么吗?非常感谢。 2019-07-02T17:02:298968129857信息[batch-thread35348]com。db。wmdl。价格档案。工作一批听众。PriceFileReaderListener([])-PriceFileR

  • 问题内容: 因此,我的目标是让函数启动自己的线程,以便可以并行运行,而不必等待上一个线程完成。问题在于,它似乎不是多线程的(意味着一个线程在另一个线程开始之前就完成了)。 我也有该函数的内部,但似乎启动的线程的标识与从其运行python脚本的主线程相同。我认为我的方法不正确。 问题答案: 这是常见错误,容易出错。 只需在主线程中一次执行您的函数,然后将(我想为您函数的返回值)作为函数传递给线程,这

  • 我有一个java maven项目,我希望使用多线程进行测试。我在src/test中有testng.xml,maven surefire插件被配置为使用它。就像这个页面一样:http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html 编辑:增加了一定的pom条目