问题标签 [concurrent-programming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
16406 浏览

c# - 按值对 ConcurrentDictionary 进行排序

我可以像这样按值对我的 ConcurrentDictionary 进行排序:

这很好,除了我想将新的重新排序列表设置为字典,有效地对字典本身进行排序,而不仅仅是接收排序项目的结果列表。

我尝试做这样的事情但没有运气 - 字典在之后仍然是无序的:

似乎这样做对字典没有影响。我还尝试将 OrderBy 结果转换为一个新的 var,认为它可能会对委托产生影响,但仍然没有运气。

如何重新排序这个 ConcurrentDictionary,然后强制字典成为 OrderBy 的重新排序结果?

0 投票
4 回答
2320 浏览

c - 实现多进程共享的数据结构可行吗?

我用谷歌搜索了很多共享(并发)数据结构,

所有这些似乎都是为线程共享的,而不是为进程共享的。

以共享哈希表为例,

如果要实现为多个进程共享,

表的所malloc​​有或等效调用都需要替换为shmget等。

但我没有看到这样的例子。

实现多个进程共享的数据结构是否可行?

我没有找到这样的例子这一事实是否意味着它不切实际?

0 投票
1 回答
571 浏览

rest - 多线程列出大型 S3 存储桶中所有密钥的可能算法?

在包含大量键的 S3 存储桶中,通过 REST api 列出键是一个非常缓慢的过程,因为

  1. 您一次只能列出 1000 个键。
  2. 确定第 5001 个键的唯一方法(据我所知)是列出前 1000 个键,根据响应中的下一个标记列出下一个键,然后递归直到到达 5001。
  3. S3 REST api 请求延迟非常高,1000 个键的请求通常需要几秒钟。

鉴于制作 100 个并发键列表 REST 请求不应减慢任何单个请求的速度,否则此过程将成熟,可以通过并行化进行优化。但是如果我的算法是“愚蠢的”并且只是将可能的密钥空间拆分为预定义的标记(例如,'','a','b','c','d','e'...... ) 它不会真正加快在每个键都以“images/”开头的存储桶中列出键的速度

所以我想知道是否有人真正体验过 S3 知道更好的方法来遍历存储桶的密钥空间,或者是否有人尝试过自适应(即“不愚蠢”)算法来改进并发密钥列表。

0 投票
1 回答
130 浏览

c - 如何编写代码以并行方式下载?

我想获得一个文件的并行下载,例如,如果文件大小为54 kb,我想以10kb的块为单位下载文件的内容。

另外,我一次不超过 5 个请求。但如何?我想过用fork(),但不是很明白怎么用。

1-10 第一个请求
11-20 第二个请求
21-30 第三个请求
31-40 第四个请求
41-50 第五个请求


51-54 等到过去的一个请求结束。然后它将被执行。

我不关心获取数据的方法(recv 等)。我只想知道如何实现并发方法?(如果我可以使用 fork() 会更好)

0 投票
4 回答
8065 浏览

java - java重用一个执行器

我在一个模拟系统上工作,在每个时间步,我必须模拟许多模型。我使用了 FixedThreadPool 来加快计算速度:

现在,执行器execute()在调用shutdown(). 有没有办法重置执行器,所以我可以在下一个模拟步骤重用现有的执行器(及其线程)?

0 投票
1 回答
502 浏览

java - 用新线程java替换执行线程

我想知道如何用 Java 中的新线程对象替换当前的执行线程。更多上下文,新线程将从具有唯一键和值作为线程对象的并发哈希映射中获取。唯一键可能从当前执行线程中获得。

0 投票
1 回答
291 浏览

network-programming - 使用条件变量(POSIX 并发 api)真的会减慢我的并行网络代码吗?

我目前正在编写一个管理多台计算机上的并行渲染的应用程序。为此,我在我的服务器应用程序上有一个管理 TCP 连接的线程池,每个问题一个线程。如果其中一个网络线程接收到数据,我想在每个 TCP 线程中使用相同的条件变量来警告另一个线程。

问题:要使用signalPOSIX api 中的函数,我必须使用互斥锁。这意味着如果 2 个网络线程同时接收数据,它们将不得不等待互斥体空闲才能继续执行。

实际上,使用这个条件变量真的会减慢我的代码吗?如果我不想使用它,我也可以在另一个线程(调用wait条件变量的那个)中创建一个循环指令,以查看我的网络线程是否收到了一些东西。

非常感谢 :)

0 投票
1 回答
174 浏览

php - ASP.NET MVC 并发开发

我正在研究建立和维护一个非常大的 Intranet 站点的最佳方法,该站点将由需要同时对站点的不同区域进行更改的几个开发人员同时开发。

我想为此使用 ASP.Net MVC,但我担心使用该技术将非常困难,因为该框架要求编译站点(视图除外)并且部署过程似乎也会覆盖其他更改当开发人员选择从他们的开发机器上进行构建时,在测试环境中。

目前我们使用一种解释性语言,它不会强迫我们构建整个站点来部署单独的更改......我是否遗漏了一些关于编译框架的方式,特别是 ASP.Net MVC 的工作方式?或者,如果不使用解释代码,几个开发人员的非顺序、快节奏开发将不可避免地导致问题?

考虑到我们在这种情况下工作流程的性质,PHP 会做出更好的选择吗?

0 投票
5 回答
218 浏览

java - 为什么少用 synchronized 关键字?

我开始学习一些 java 并发概念并投入使用。但是这段代码之一超出了我的理解。

0 投票
3 回答
1692 浏览

java - Java:ConcurrentHashMap 的 ConcurrencyLevel 值

ConcurrencyLevel 是否存在某个最佳值,超过该值 ConcurrentHashMap 的性能开始下降?

如果是,该值是多少,性能下降的原因是什么?(这个问题源于试图找出 ConcurrentHashMap 可能具有的任何实际限制)。