标签: single-threaded

vert.x如何是单线程的?

根据我的理解,每个vert.x实例都将被分配一个事件循环.事件循环处理该特定实例的所有请求和其他任务.我想,事件循环是一个主题.当部署了多个vert.x实例时,每个实例都有自己的事件循环吗?这意味着存在多个线程(多线程).这就是我的理解.这种单线程概念让我非常头疼.任何帮助将不胜感激.

java multithreading single-threaded vert.x singlethreadmodel

7
推荐指数
2
解决办法
4191
查看次数

当节点在node.js中结束时,会指定哪些事件?

我已经读过tick是一个执行单元,其中nodejs事件循环决定运行其队列中的所有内容,但除了明确说明process.nextTick()哪些事件导致node.js事件循环开始处理新的tick?是等待I/O吗?那么cpu绑定计算呢?或者只要我们输入新功能?

javascript single-threaded node.js

7
推荐指数
1
解决办法
947
查看次数

单线程JavaScript下的动画

JavaScript是单线程语言,因此它一次只执行一个命令.异步编程通过Web API(用于事件处理的DOM,用于AJAX调用的XMLHttpRequest,用于setTimeout的WindowTimers)和由浏览器管理的事件队列来实现.到现在为止还挺好!现在考虑一下,以下非常简单的代码:

$('#mybox').hide(17000);
console.log('Previous command has not yet terminated!');
... 
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释上面的基本机制吗?由于.hide()还没有完成(动画持续17秒)并且JS引擎正在处理它并且它能够一次执行一个命令,它以哪种方式进入下一行并继续运行剩下的代码?

如果您的答案是动画创建了promises,那么问题仍然是:JavaScript如何同时处理多个事物(执行动画本身,在承诺的情况下观察动画队列并继续执行下面的代码). ..).

此外,我无法解释jQuery中的promises如何工作,如果他们必须观察他们的父Deferred对象,直到它被解析或拒绝 ,这意味着代码执行,同时执行剩余的代码.这怎么可能在单线程方法中?理解AJAX调用我没有问题,因为我知道它们被JS引擎带走了......

javascript single-threaded jquery-animate

7
推荐指数
1
解决办法
1003
查看次数

7
推荐指数
2
解决办法
197
查看次数

理解JavaScript的单线程特性

我一直在阅读John Resig的"JavaScript忍者的秘密",它解释了JavaScript是单线程的.但是,我试过测试这个,我不知道该从这里带走什么:

// executing this in browser
(function () {
    // throw something into event queue
    setTimeout(function () {
        alert("This will be called back after 1 second.");
    }, 1000);

    // arbitrary loop to take up some time
    for (var i = 0; i < 10000; i += 1) {
        console.log(i);
    }
})();
Run Code Online (Sandbox Code Playgroud)

也许我并不完全理解单线程意味着什么,但我认为在所有外部匿名函数完成之前,setTimeout回调不会执行.但是,在浏览器中运行它会显示回调函数在我仍然输出到控制台时被调用.对我来说,这似乎有两个线程,匿名函数的invokation占用1个线程,然后回调使用第二个线程.

有人可以帮助我迷惑吗?

javascript events multithreading callback single-threaded

6
推荐指数
1
解决办法
3069
查看次数

为什么我的活动监视器使用多个线程显示Node.js?

我在OSX中打开了我的活动监视器,看看Node是如何相处的,令我惊讶的是它使用了8个线程.怎么可以!!?

节点有8个线程

multithreading single-threaded node.js

6
推荐指数
1
解决办法
1355
查看次数

数据库是单线程的吗?

假设有一家医院运行一个简单的数据库。该数据库中有一个名为“患者”的表,其中包含 1,000,000 条记录——每条记录都是状态为“活动”或“出院”的患者。

Bob 运行以下查询,该查询将需要几秒钟甚至几分钟的时间才能运行:

SELECT COUNT(*) FROM PATIENTS WHERE STATUS = "active"
Run Code Online (Sandbox Code Playgroud)

当 Bob开始执行查询时,有 100 名患者处于活动状态。

但是,在查询运行时,Susie 在表上运行以下命令:

UPDATE PATIENTS SET STATUS = "discharged" WHERE PATIENT_ID = 583739789
Run Code Online (Sandbox Code Playgroud)

该命令让一名活跃患者出院,将真正的“活跃”患者数量更改为 99。

Susie 执行此操作后,Bob 的查询完成。他的查询结果是 100 名活跃患者还是 99 名活跃患者?不同的数据库如何处理这个问题(Oracle、MySQL、SQLite 等)?

sql database corruption single-threaded

6
推荐指数
1
解决办法
3655
查看次数

单线程异步处理

即使在阅读http://krondo.com/?p=1209异步调用是否总是创建/调用新线程之后?我仍然对如何在固有的单线程系统上提供异步调用感到困惑。我将解释我到目前为止的理解并指出我的疑问。

我读过的一个例子是描述一个提供异步请求处理的 TCP 服务器 - 用户会调用一个方法,例如 get(Callback c),稍后会调用回调。现在,我在这里的第一个问题 - 我们已经有两个系统,一个服务器和一个客户端。这不是我的意思,因为事实上我们至少有两个线程——一个在服务器端,一个在客户端。

我读过的另一个例子是 JavaScript,因为这是使用Node.js. 我无法理解,也许用 Java 术语思考的是:如果我执行下面的代码(为不正确的,可能是残暴的语法道歉):

function foo(){
    read_file(FIle location, Callback c) //asynchronous call, does not block
    //do many things more here, potentially for hours
}
Run Code Online (Sandbox Code Playgroud)

对读取文件的调用执行 (sth) 并返回,允许我的函数的其余部分执行。由于只有一个线程,即正在执行我的函数的线程,那么同一个线程(也是唯一一个正在执行我的东西的线程)究竟如何从磁盘读取字节?

基本上,在我看来,我缺少一些像某种循环调度程序一样的底层机制,它本质上是单线程的,可能会将任务拆分为较小的任务,或者调用会产生线程的多线程组件和读入文件。

预先感谢所有评论并指出我在途中的错误。

更新:感谢所有回复。帮助我解决这个问题的更多好资源在这里:

  1. http://www.html5rocks.com/en/tutorials/async/deferred/
  2. http://lostechies.com/johnteague/2012/11/30/node-js-must-know-concepts-asynchrounous/
  3. http://www.interact-sw.co.uk/iangblog/2004/09/23/threadless (.NET)
  4. http://ejohn.org/blog/how-javascript-timers-work/(计时器的内在函数)
  5. http://www.mobl-lang.org/283/reducing-the-pain-synchronous-asynchronous-programming/

javascript java multithreading asynchronous single-threaded

5
推荐指数
1
解决办法
3061
查看次数

我可以强制浏览器在 javascript 执行期间呈现 DOM 更改吗

有没有办法强制浏览器在 JavaScript 执行期间呈现 DOM 更改?在下面的例子中,只会显示“1000”,我知道这是因为只有一个线程处理 JavaScript 执行,但我想知道是否有办法强制浏览器呈现每个 DOM 更改?

例子:

var el = document.getElementById("#fixup"),
   i;

for (i = 1; i <= 1000; i++) {
   // can i force this DOM update to the rendered?
   el.innerHTML = i.toString());
}
Run Code Online (Sandbox Code Playgroud)

javascript browser render single-threaded

5
推荐指数
1
解决办法
3079
查看次数

在 Node/Express 服务器中使用 async/await 是个坏主意吗?

我有一个 NodeJS/Express Web 应用程序,其中 TypeOrm 用于许多数据库功能。为了避免回调地狱,我通常使用async/await我的端点方法调用并等待数据库操作。
但是,我听说fs.readFileSync应该始终避免使用此类方法,因为它们会阻塞并强制所有其他请求等待。这也适用于async/await? 我是否必须使用承诺和回调来获得不错的多用户性能?

model-view-controller single-threaded node.js express async-await

5
推荐指数
2
解决办法
3763
查看次数