为了账号安全,请及时绑定邮箱和手机立即绑定

关于异步的一些概念

关于异步的一些概念

交互式爱情 2019-02-07 10:10:22
最近了解tornado框架, 于是听人说了的这么一句话, python库并不是都支持异步的, 好吧于是联想一下, 可能说的是如果子线程 或 子进程同时在运行这段代码, 不管怎么样,要么不会有同时在操作的变量, 要么就是对这种的变量做了锁的处理, 不知道到这里的支持异步 和 线程安全的代码是否想表达的是一个意思呢?
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我理解的 异步 和 线程安全 是两个不同领域的概念.

异步

举个 同步 的例子

f1()
f2()
f3()

这种调用方式使得代码只能按顺序执行, 假设 f1-3 调用耗时分别是 1,2,3 秒, 那么执行完需要 1+2+3=6 秒.

而异步调用可能是这样的

task1 = async_f1()
task2 = async_f2()
task3 = async_f3()
gather(task1, task2, task3)

这样执行完只需要 3 秒, 因为 3 个调用可以同时进行.

线程安全

以函数为例, 线程安全意味着多个线程同时调用时, 各个线程之间不会有冲突.


查看完整回答
反对 回复 2019-02-19
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

这里有个前提是在业务逻辑层面,而系统IO通常都是同步。
异步是调用发出后就直接返回了,结果要等被调用的状态或者回调通知。
而常见 result = some_function(xxx), 显然是要等结果的,这样就无法直接支持异步调用。
线程安全和 异步显然不是一个意思。

查看完整回答
反对 回复 2019-02-19
  • 2 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信