相关疑难解决方法(0)

异步与非阻塞

异步和非阻塞调用之间有什么区别?阻塞和同步调用之间(请举例)?

asynchronous synchronous blocking

352
推荐指数
9
解决办法
11万
查看次数

有什么区别:异步,非阻塞,事件基础架构?

  1. 有什么区别:

    • 异步,
    • 非阻止,和
    • 基于事件的架构?
  2. 可以是异步非阻塞(以及基于事件的)吗?

  3. 在编程中最重要的是拥有一些东西:异步,非阻塞和/或事件库(或全部3)?

如果你能提供一些例子,那就太棒了.

这个问题正在被问到,因为我正在阅读关于类似主题的这篇伟大的StackOverflow文章,但它没有回答我上面的问题.

asynchronous programming-languages event-based-programming nonblocking blocking

77
推荐指数
3
解决办法
3万
查看次数

关于node.js内部异步I/O机制的困惑

  1. 我已经了解到node.js在内部使用libeio来执行异步文件 I/O,使用线程池,在*nix平台上,我是对的吗?
  2. 那么异步网络 I/O呢?它是由libev完成的吗?还有线程池吗?
  3. 如果内部有线程池,那么它如何比传统的每线程请求模型更高效?每个I/O请求是一个线程吗?
  4. Windows上的机制是什么?我知道它是由IOCP完成的,并且有一个内核级线程池,对吧?
  5. 为什么linux没有像Windows IOCP这样的本机完全AIO机制呢?它将来会有吗?

根据昌昌的回答更新:

  1. 我快速查看了@changchang给出的源代码,发现默认的线程池大小可以通过UV_THREADPOOL_SIZE重置,我想知道在哪种情况下会使用这个?
  2. 我还发现getaddrinfo使用这个线程池,除了fs还有更多吗?如果所有同步作业都将在此线程池中完成,那么默认大小"4"是否足够?
  3. 正如我现在的理解,node.js进程中将有6个基本线程:1个V8线程(事件循环,用户javascript代码运行),1个libuv事件循环,4个线程池,我是对的吗?
  4. 我怎样才能在shell(Ubuntu)中看到这些线程?我用ps -eLf | grep节点| grep -v grep只看到两个:

    root 16148 7492 16148 0 2 20:43 pts/26 00:00:00 ./bin/node /home/aaron/workspace/test.js
    root 16148 7492 16149 0 2 20:43 pts/26 00:00:00./bin/node /home/aaron/workspace/test.js

javascript linux io node.js libuv

23
推荐指数
1
解决办法
6509
查看次数

JavaScript 中的事件循环和 Node.js 中的异步非阻塞 I/O 有什么区别?

在这个问题的回答中——

Node.js 中的非阻塞或异步 I/O 是什么?

这个描述听起来与普通 js 中的事件循环没有什么不同。两者有区别吗?如果不是,事件循环是否只是简单地重新命名为“异步非阻塞 I/O”,以便更容易地销售 Node.js 而不是其他选项?

javascript event-loop node.js nodejs-server

17
推荐指数
2
解决办法
2485
查看次数

使用 CPU 的“Keras backend + Tensorflow”和“来自 Tensorflow 的 Keras”有什么区别(在 Tensorflow 2.x 中)

我想限制 CPU 内核和线程。所以我找到了三种方法来限制这些。

1) “Keras 后端 + Tensorflow”

from keras import backend as K
import tensorflow as tf

config = tf.ConfigProto(intra_op_parallelism_threads=2, \ 
                        inter_op_parallelism_threads=4, \
                        allow_soft_placement=True, \
                        device_count = {'CPU': 1})
session = tf.Session(config=config)
K.set_session(session)
Run Code Online (Sandbox Code Playgroud)

2) “来自 Tensorflow 的 Keras”

import tensorflow as tf
from tensorflow import keras

tf.config.threading.set_intra_op_parallelism_threads(2)  
tf.config.threading.set_inter_op_parallelism_threads(4) 
Run Code Online (Sandbox Code Playgroud)

3) “来自 Tensorflow 的 keras”

import os

os.environ['TF_NUM_INTRAOP_THREADS'] = '2'
os.environ['TF_NUM_INTEROP_THREADS'] = '4'
Run Code Online (Sandbox Code Playgroud)

这三种方式影响一样吗?

最后我理解了我在下面写的参数

  • intra_op_parallelism_threads("CPU 核心数")
  • inter_op_parallelism_threads("线程数")

这是正确的吗?如果我错过了理解,请告诉我。

谢谢你。

python keras tensorflow2

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

async.waterfall 和 child_process.execSync 有什么区别?

假设这是 linux shell,我想做的是:

copy file1 tmp
rename tmp file2
Run Code Online (Sandbox Code Playgroud)

我可以做瀑布

function copyFile(cb) {
    child_process.exec('cp file1 tmp', function (error, stdout, stderr) {
        ......
    });
}
async.waterfall([
    copyFile,
    renameFile
], function (error) {
    if (error) {
        //handle readFile error or processFile error here
    }
});
Run Code Online (Sandbox Code Playgroud)

或者猜我可以做

child_process.execSync('cp file1 tmp");
child_process.execSync('rename tmp file2');
Run Code Online (Sandbox Code Playgroud)

请问有什么区别?例如性能?阻塞?非常感谢 !

javascript node.js

3
推荐指数
1
解决办法
2986
查看次数

Nodejs异步编程 - 为什么需要"异步"模块?什么是"回调地狱"/"厄运金字塔"?

其中一个NodeJS最大的特点就是它asynchronous从我正在阅读的内容中开箱即用,但作为一个初学者,如果已经在本地处理这些NodeJS模块async,那么为什么存在?

https://www.npmjs.com/package/async

我认为有一个很好的理由,但对我来说并不明显.是处理callback hell还是Pyramid of Doom.

javascript asynchronous node.js async.js

2
推荐指数
1
解决办法
227
查看次数

Kotlin 协程中的 delay() 是非阻塞函数吗?

示例代码中的注释说 delay() 是非阻塞的。应该暂停吗?

https://kotlinlang.org/docs/reference/coroutines/basics.html

fun main() {
    GlobalScope.launch { // launch new coroutine in background and continue
        delay(1000L) // non-blocking delay for 1 second (default time unit is ms)
        println("World!") // print after delay
    }
    println("Hello,") // main thread continues while coroutine is delayed
    Thread.sleep(2000L) // block main thread for 2 seconds to keep JVM alive
}
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-coroutines

0
推荐指数
1
解决办法
2280
查看次数