- 主题:async编程改造的问题
现在要改造一个项目到async
怎么确定一个函数要用async呢,看chatgpt说,io密集型和计算密集型的函数要async
另外,如果计算密集型,比如rsa加密没有async,会出现什么后果呢
--
FROM 119.139.199.*
没有async的话会阻塞调用线程,一般会导致界面卡顿(如果调用线程是UI线程的话)。
--
FROM 183.242.12.*
【 在 iwannabe 的大作中提到: 】
: 现在要改造一个项目到async
: 怎么确定一个函数要用async呢,看chatgpt说,io密集型和计算密集型的函数要async
: 另外,如果计算密集型,比如rsa加密没有async,会出现什么后果呢
IO密集型是IO忙, 会导致CPU空闲,浪费CPU的算力。
计算密集型, 则应该是可以发挥多核计算, 否则,
就是面对复杂的计算,一个核忙废, 其它核围观。
--
FROM 124.126.0.*
计算密集型加不加 async 没啥区别
【 在 iwannabe 的大作中提到: 】
: 现在要改造一个项目到async
: 怎么确定一个函数要用async呢,看chatgpt说,io密集型和计算密集型的函数要async
: 另外,如果计算密集型,比如rsa加密没有async,会出现什么后果呢
: ...................
--
FROM 98.33.85.*
【 在 iwannabe 的大作中提到: 】
: 现在要改造一个项目到async
: 怎么确定一个函数要用async呢,看chatgpt说,io密集型和计算密集型的函数要async
: 另外,如果计算密集型,比如rsa加密没有async,会出现什么后果呢
如果是 CPU 密集型的任务(如大的计算任务),应当使用 async 定义方法,在方法内使用 await 等待 Task.Run() 的任务返回结果,Task.Run() 使用线程池,通常会使用与当前主线程不同的线程。
这里说的是C#,其他语言我不懂。
如果没有async,那么会一直卡在这个线程上,如果此时还有UI线程在等待刷新,那么UI会卡死。
--
FROM 118.112.56.*