最近了解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 个调用可以同时进行.
线程安全
以函数为例, 线程安全意味着多个线程同时调用时, 各个线程之间不会有冲突.
慕婉清6462132
TA贡献1804条经验 获得超2个赞
这里有个前提是在业务逻辑层面,而系统IO通常都是同步。
异步是调用发出后就直接返回了,结果要等被调用的状态或者回调通知。
而常见 result = some_function(xxx), 显然是要等结果的,这样就无法直接支持异步调用。
线程安全和 异步显然不是一个意思。
添加回答
举报
0/150
提交
取消