为什么说以异步方式执行的程序不适合大量的并发
展开全部
没有这么说吧,如果一定要找个理由的话,我认为有两点:
一是高度开销比较大。如果你的异步代码过小,但是并发数量又很大的话,那么进程(线程)间切换所消耗的时间可能比代码本身执行的时间还要长,那么随着并发数量的增大,进程调试的代价比例越来越大,就得不偿失了。
二是安全性。异步代码最大的问题就是线程安全。你要在异步代码中考虑全局变量的一致性问题,竞争问题,所以就带来额外的锁、信号量等等,不仅加重了代码负担,也容易出错。所以很多教科书都建议不要在异步代码中访问全局变量(但实际工作中毕竟难以避免)。如果大量并发线程都在竞争一个全局变量,那么实际上并发带来的好处就已经消失不见了。
一是高度开销比较大。如果你的异步代码过小,但是并发数量又很大的话,那么进程(线程)间切换所消耗的时间可能比代码本身执行的时间还要长,那么随着并发数量的增大,进程调试的代价比例越来越大,就得不偿失了。
二是安全性。异步代码最大的问题就是线程安全。你要在异步代码中考虑全局变量的一致性问题,竞争问题,所以就带来额外的锁、信号量等等,不仅加重了代码负担,也容易出错。所以很多教科书都建议不要在异步代码中访问全局变量(但实际工作中毕竟难以避免)。如果大量并发线程都在竞争一个全局变量,那么实际上并发带来的好处就已经消失不见了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询