【问题标题】:Concurrency with multiple users accessing the same system (in which system handles requests concurrently)多个用户访问同一系统的并发(系统同时处理请求)
【发布时间】:2013-01-11 02:07:00
【问题描述】:

我一直在思考一个令人困惑的问题。在我的应用程序的好日子场景中,我想编写一个algorithm,它在parallel 中为我编译我的数据,并利用加速。但在我进行所有这些努力之前,我想知道在这种情况下是否有可能,或者只是一个白日梦。

(wikipedia, 2011)

就这个问题而言,假设我有 5 个用户(User A, User B, User C, User D and User E。这些用户使用用户名/密码登录,而不是线程的隐喻)通过 @ 处理的会话在 SYSTEM 中登录987654327@.

假设User A 向服务器发送请求以计算长度为 1000 x 1000 的梯形(系统将此请求分为 4 个部分并将每个部分发送到一个核心)。现在还可以说,为了这个问题,User B 也与User A 同时登录,并且他还向系统发送了一个请求,以计算不同长度的梯形(系统继续并将其除以到服务器的核心)。

根据我的简要了解,我知道这种情况显然对于单个用户是可能的,但是对于同时访问系统的超过 1 个用户(并且让系统同时处理请求)是否可能?可以很好地编写一个java程序来处理这个问题吗?或者bottle neckUser AUser B 之间会出现其他情况(因为它们从系统中竞争资源)? User 并发处理大量数据最好使用 linear algorithms 在不同的实例化对象中处理,还是可以使用 parallel algorithms 使用基于 Web 的产品来完成?

【问题讨论】:

    标签: multithreading servlets concurrency web theory


    【解决方案1】:

    当多个线程同时访问共享数据时会出现竞争条件。当多个线程以冲突的顺序锁定资源时,就会发生死锁。

    这些在多线程环境中总是可行的,但成千上万的系统具有类似的功能。单击下面的“发布您的答案”按钮后,SO 将使用来自多个用户的答案更新问题。由于比赛条件,您没有看到任何垃圾是吗?

    您将受益于对算法进行伪编码并查看您可以在哪里实现并发 - 一种方法是使用线程私有的数据,例如局部变量和线程局部变量。另一个是识别使用共享数据的(小)代码段,并使用锁定结构来确保它们不会并行执行,从而允许其余代码并行执行。

    【讨论】:

    • 当我提到“用户”时,我指的不是线程的隐喻。它更多的是关于在同一个应用程序上同时完成请求的多个用户的问题。
    • 我理解你的回答,但它的上下文错误。我已经更新了我的问题。
    • 基于 Web 的系统本质上与任何其他系统没有任何不同,至少就并发性而言。不清楚你在问什么。
    猜你喜欢
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多