全球主机交流论坛

标题: 异步发送请求和线程里面发送,有区别吗? [打印本页]

作者: 你号没了    时间: 2024-3-27 08:01
标题: 异步发送请求和线程里面发送,有区别吗?
在讨论异步发送请求和在线程中发送请求之间的区别时,需要考虑到两个不同的概念:异步和多线程。

异步发送请求:

异步通常指的是一种编程模型,其中操作可以在不阻塞主程序执行的情况下进行。在异步操作中,程序可以继续执行其他任务而不必等待某些操作完成。
当您使用异步方式发送请求时,您通常会使用异步编程模型或库,如Node.js的axios、Python的aiohttp等。这样的库通常会利用事件循环机制或回调函数来处理异步操作,从而实现非阻塞的网络请求。
在线程中发送请求:

在线程中发送请求意味着您在程序中创建了一个新的线程来处理请求。多线程编程允许程序同时执行多个任务,每个任务可以在独立的线程中运行。
在这种情况下,每个请求可能会在一个单独的线程中执行,这样可以使得各个请求之间相互独立,不会相互阻塞。
区别:

异步发送请求强调的是非阻塞的执行方式,适用于单线程环境下处理大量I/O密集型任务。
在线程中发送则是通过多线程来并发处理多个请求,适用于需要同时处理多个计算密集型或I/O密集型任务的情况。
总的来说,异步发送请求侧重于利用事件循环或回调来实现非阻塞操作,而在线程中发送请求侧重于并发处理多个请求。您可以根据具体的需求和编程环境选择适合的方式来发送请求。



为了不阻塞主线程。各位大佬喜欢用多线程还是异步。
作者: anrighthand    时间: 2024-3-27 08:04
异步是异步,多线程是多线程。两个东西不一样
作者: 你号没了    时间: 2024-3-27 08:07
anrighthand 发表于 2024-3-27 08:04
异步是异步,多线程是多线程。两个东西不一样

用来处理请求。作用应该是一样的吧  
在线程里面处理。会不会更“模块”化一些
作者: anrighthand    时间: 2024-3-27 08:12
你号没了 发表于 2024-3-27 08:07
用来处理请求。作用应该是一样的吧  
在线程里面处理。会不会更“模块”化一些 ...

不同的语言不同的使用,你自己用的爽就行了,一般也不用太较真
作者: CMBCHINA    时间: 2024-3-27 08:17
为了不阻塞主线程,我选择MQ,多线程不是你这么用的
作者: 你号没了    时间: 2024-3-27 08:44
本帖最后由 你号没了 于 2024-3-27 08:46 编辑
CMBCHINA 发表于 2024-3-27 08:17
为了不阻塞主线程,我选择MQ,多线程不是你这么用的


那也要连接mq服务器吧。 连接mq还要引入类库  有点加大体积了呢
小项目只发一个请求 没这个必要吧

作者: liloli    时间: 2024-3-27 09:00
能解决问题就行 , 管他是啥方案
作者: misakafa    时间: 2024-3-27 09:07
异步执行不也是靠线程做嘛,我觉得没啥区别,都是给一个函数让线程调用
作者: whyniz    时间: 2024-3-27 09:33
异步只是一种非阻塞运行的思想,可以基于单线程,也可以基于多线程;多线程一般指的是一种程序并行的实现方式(在多核CPU上)。异步还可以用其他方法实现,回调函数(前端js的promise、callback),事件循环之类的
作者: mgxlin    时间: 2024-3-27 13:57
异步远程调用:main主线程会继续执行,但 pool-1 这个异步线程依旧会阻塞等待远程调用响应。依然会占一个线程以及对应的cpu时间片。
作者: hozi    时间: 2024-3-27 14:34
什么时候 MJJ 这么高大上了




欢迎光临 全球主机交流论坛 (https://loc.528866.xyz/) Powered by Discuz! X3.4