小猪piy
2019-09-04 21:47
采纳率: 50%
浏览 703
已采纳

关于如何模拟高并发,这是我在网上看到的一个,请问这样算是高并发模拟吗?

<title>参数</title>
    <!-- 加载Query文件-->
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.0.js">
    </script>
    <script type="text/javascript">
        $(document).ready(function () {
            //模拟10000个异步请求,进行并发
            //真正对数据库存储产生影响的是为user用户的stock数量
            var max = 15000;
            for (var i = 1; i <= max; i++) {
                //jQuery的post请求,请注意这是异步请求
                $.post({
                    //根据自己请求修改对应的url
                    // url: "./question/insertQuestionByRedis.do?times="+i+"&userId=1&question=问题"+i.toString()+"&answer=答案", //使用redis
                    url: "./question/insertQuestion.do?userId=1&question=问题"+i+"&answer=答案",      //没有使用Redis
                    //成功后的方法
                    success: function (result) {
                    }
                });
            }
        });
    </script>

利用for循环异步提交,但是for循环是一个一个来的,有点不太懂,请求大佬解答下。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

3条回答 默认 最新

  • Json-Huang 2019-09-04 22:29
    最佳回答

    这个是高并发模拟请求,并发很容易跟并行这个概念混淆,计算机操作系统也对并发做过说明,只要在很短时间段内,上一个请求未执行完毕前下一个请求发起都可以算宏观意义的并发。for循环执行是很快的操作,所以是并发而不是并行。

    下面摘百度百科介绍并发和并行区别,可以参考下:

    并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
    
    并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。
    
    评论
    解决 无用
    打赏 举报
查看更多回答(2条)

相关推荐 更多相似问题