问题标签 [serial-processing]

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 投票
1 回答
992 浏览

javascript - Synchronous functions without callbacks

Assume I have these two functions:

Assume that I didn't write them - they are third party. Now I want to call them synchronously and get:

The problem is, I can't use callbacks (third party functions). I also can't use promises or events (the same reason). I can't use async and step modules, because of functions arity. How the hell can I call simple() after complex() (and all nested sub-functions) synchronously? And do JavaScript sux? :)

0 投票
7 回答
4819 浏览

ios - GCD串行队列似乎没有串行执行

我有一个方法,有时可以在我的代码中调用。下面是一个非常基本的示例,因为代码处理了 iphone 照片库中的图像和文件,并在使用该方法完成时将它们标记为已处理。

我认为每次调用此方法时,我都会得到以下输出......“在 processImages”“使用 processImages 完成”“在 processImages”“使用 processImages 完成”等......

但我总是得到

“在 processImages” “在 processImages” “用 processImages 完成” “用 processImages 完成” 等等......

我认为串行队列会等到第一个块完成,然后开始。对我来说,它似乎正在启动该方法,然后再次调用它并在第一次调用完成之前启动,创建通常不会被处理的图像副本,因为如果它真的连续执行,该方法会知道它们已经被处理了。也许我对串行队列的理解并不具体。有输入吗?谢谢你。

编辑:下面的更多上下文,这就是块中发生的事情......这会导致问题吗?

这个对象只创建一次,据我所知,永远不能根据我的代码再次创建......我将运行测试以确保。

更新 2:我认为正在发生的事情,如果您同意/不同意,请对此发表评论......

显然,我的主要问题是,这块代码似乎正在同时执行,创建重复条目(两次导入同一张照片),而如果它是串行运行的,通常不会这样做。处理照片时,会对其应用“脏”位,以确保下次调用该方法时会跳过该图像,但这不会发生,并且某些图像会被处理两次。这可能是因为我使用 enumerategroupswithtypes: 在那个 serialQueue 中枚举第二个队列中的对象吗?

  1. 调用 processImages
  2. 枚举对象
  3. 立即从 enumerateObjects 返回,因为它本身是异步的
  4. 结束对 processImages 的调用

processImages 并没有真正完成,因为 enumerategroups 可能仍在运行,但队列可能已经完成,因为它在 enumerategroups 完成工作之前到达块的末尾。这对我来说似乎是一种可能性?

0 投票
1 回答
719 浏览

shell - 在 unix 中完成 command1 后执行 command2 的 shell 脚本

如果我有一个 UNIX shell 脚本,它在需要运行的每一行都有一些命令,比如

只有在 command1 完成后才会执行 command2。如何实现它

0 投票
1 回答
745 浏览

gcc - 了解多核系统上的 gcc 优化 -o3

我目前正在比较四核处理器上某些代码的串行与并行实现。我想了解/衡量的一件事是串行代码在单核上运行时的性能。

当我编译串行代码时,我使用 gcc 的 -O3 选项,起初我注意到串行代码并没有太破旧。但是,我注意到的一件事是,当我在其中一个内核上运行另一个计算密集型进程时,串行版本的性能下降。

以下是一些数字:

我猜可能有后台进程在四个核心之一上运行。但据我所知,在四核处理器上运行两个进程不应使所有四个内核都饱和。

我想知道的是是否有理由相信 O3 过程中的某些步骤允许代码利用四核设置,或者更准确地说,为什么所谓的“串行版本”执行当其他内核可用时更好?我试图理解 GCC 文档,我收集到了一些对线程的引用。但我不太明白,想知道是否有人可以帮助我准确理解 O3 可能会或可能不会做些什么来利用多个核心。

值得一提的是,我使用的是 Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz,并且正在运行 linux mint 13。

谢谢

0 投票
1 回答
210 浏览

parallel-processing - 带有 openMPI 的串行 Fortran 代码

我是并行计算的新手。

我必须运行传统的流体动力学 Fortran 77 代码。该程序是串行的并且运行缓慢,所以我想知道是否可以使其并行运行(例如,通过使用开放式 MPI),而无需深入研究代码。可能吗?

0 投票
0 回答
219 浏览

java - 使用 Java 从 URLS 加载文本的最快方法,无需并发

奇怪的请求,我知道,但我正在开发一个程序作为学习练习,它需要一个 .txt 文件,其中包含一堆指向网络上文本文件的 URL。然后它对每个文本中的每个单词进行哈希处理,并允许用户进行搜索。

我正在构建程序两次,一次没有并发,一次有。我刚刚完成了 sans-concurrency 程序的散列部分,我的时间显示时间与原始文件中 URL 的数量呈线性关系。

不过,该过程中最慢的部分实际上是从 Web 检索 URL。目前我正在这样做

其中 revURL 是从 main 传递给方法的字符串。有没有更快的方法来检索这些文件,或者在不中断并发的情况下,这是否会尽可能快?

0 投票
0 回答
287 浏览

iphone - 串行 NSOperation

我有带有单元格集合的表视图控制器,每个单元格显示 2 个值:

––––––––––––––––––––––––<br> | 单元格1 | val1 | val2 |
––––––––––––––––––––––––<br> | 单元格2 | val1 | val2 |
––––––––––––––––––––––––<br> ...</p>

我需要使用以下算法对这些单元执行串行同步操作:

  1. 设置核心数据并更新 tableView UI
  2. 迭代单元格
    2.1 更新 tableViewCell UI
    2.2 迭代值
        2.2.1 更新值 UI
        2.2.2 下载新值
            2.2.2.1 如果失败重复迭代
        2.2.3 保存和更新值 UI
    2.3 更新 tableViewCell UI
  3. 保存和更新 tableView UI

我将 NSOperationQueue 与 NSBlockOperations 一起使用:

使用此代码,最后一个操作 (#3) 在所有迭代完成之前执行。

我正在寻找有关如何正确嵌套操作和队列以维护串行顺序的建议。

0 投票
1 回答
166 浏览

ios - 使用 Parse 时 GCD 串行队列似乎没有串行执行

提前感谢您的帮助。我正在尝试创建一个应用程序,允许用户回答问题并为一群人添加自己的问题。我正在从 parse 下载股票问题,出于各种原因,我需要将这些问题按特定顺序加载到主数组中。我正在尝试使用串行 GCD 队列来完成此操作,但这始终在预期结果和相反结果之间切换。这对我来说没有意义,但我无法摆脱这种感觉,即它可能与解析查询使用的异步下载请求有关,并且这里没有其他答案可以解决。

这是我的代码:

这是我写的辅助方法:

再次,非常感谢任何帮助!

0 投票
1 回答
1104 浏览

concurrency - 两阶段锁定如何帮助避免不可序列化的调度?

现在,我在这里有两笔交易。一致性要求为 A=0 v B=0,其中 A=B=0 为初始值

我知道没有并行执行导致可序列化的计划。所以我想应用两阶段锁定来保证可序列化。

两阶段锁定如何保证可串行化?你能给我举一个这两笔交易的例子吗?

谢谢你。

0 投票
2 回答
132 浏览

list - 依次调用任意数量的 WS.url().get()

我有一个我想要按顺序加载和处理(解析、存储到数据库)的 URL 列表 [String]。

我发现只有固定长度的例子,比如:

但我需要处理这只小狗,而不是 url1 和 url2:

非常感谢您提供的任何提示和建议!