0

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

加速维基百科,2011)

假设出于这个问题的目的,我有 5 个用户(User A, User B, User C, User D and User E。这些是使用用户名/密码登录的人,而不是线程的隐喻)在SYSTEMCookies.

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

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

4

1 回答 1

0

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

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

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

于 2013-01-11T02:13:58.383 回答