问题标签 [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.
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? :)
ios - GCD串行队列似乎没有串行执行
我有一个方法,有时可以在我的代码中调用。下面是一个非常基本的示例,因为代码处理了 iphone 照片库中的图像和文件,并在使用该方法完成时将它们标记为已处理。
我认为每次调用此方法时,我都会得到以下输出......“在 processImages”“使用 processImages 完成”“在 processImages”“使用 processImages 完成”等......
但我总是得到
“在 processImages” “在 processImages” “用 processImages 完成” “用 processImages 完成” 等等......
我认为串行队列会等到第一个块完成,然后开始。对我来说,它似乎正在启动该方法,然后再次调用它并在第一次调用完成之前启动,创建通常不会被处理的图像副本,因为如果它真的连续执行,该方法会知道它们已经被处理了。也许我对串行队列的理解并不具体。有输入吗?谢谢你。
编辑:下面的更多上下文,这就是块中发生的事情......这会导致问题吗?
这个对象只创建一次,据我所知,永远不能根据我的代码再次创建......我将运行测试以确保。
更新 2:我认为正在发生的事情,如果您同意/不同意,请对此发表评论......
显然,我的主要问题是,这块代码似乎正在同时执行,创建重复条目(两次导入同一张照片),而如果它是串行运行的,通常不会这样做。处理照片时,会对其应用“脏”位,以确保下次调用该方法时会跳过该图像,但这不会发生,并且某些图像会被处理两次。这可能是因为我使用 enumerategroupswithtypes: 在那个 serialQueue 中枚举第二个队列中的对象吗?
- 调用 processImages
- 枚举对象
- 立即从 enumerateObjects 返回,因为它本身是异步的
- 结束对 processImages 的调用
processImages 并没有真正完成,因为 enumerategroups 可能仍在运行,但队列可能已经完成,因为它在 enumerategroups 完成工作之前到达块的末尾。这对我来说似乎是一种可能性?
shell - 在 unix 中完成 command1 后执行 command2 的 shell 脚本
如果我有一个 UNIX shell 脚本,它在需要运行的每一行都有一些命令,比如
只有在 command1 完成后才会执行 command2。如何实现它
gcc - 了解多核系统上的 gcc 优化 -o3
我目前正在比较四核处理器上某些代码的串行与并行实现。我想了解/衡量的一件事是串行代码在单核上运行时的性能。
当我编译串行代码时,我使用 gcc 的 -O3 选项,起初我注意到串行代码并没有太破旧。但是,我注意到的一件事是,当我在其中一个内核上运行另一个计算密集型进程时,串行版本的性能下降。
以下是一些数字:
我猜可能有后台进程在四个核心之一上运行。但据我所知,在四核处理器上运行两个进程不应使所有四个内核都饱和。
我想知道的是是否有理由相信 O3 过程中的某些步骤允许代码利用四核设置,或者更准确地说,为什么所谓的“串行版本”执行当其他内核可用时更好?我试图理解 GCC 文档,我收集到了一些对线程的引用。但我不太明白,想知道是否有人可以帮助我准确理解 O3 可能会或可能不会做些什么来利用多个核心。
值得一提的是,我使用的是 Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz,并且正在运行 linux mint 13。
谢谢
parallel-processing - 带有 openMPI 的串行 Fortran 代码
我是并行计算的新手。
我必须运行传统的流体动力学 Fortran 77 代码。该程序是串行的并且运行缓慢,所以我想知道是否可以使其并行运行(例如,通过使用开放式 MPI),而无需深入研究代码。可能吗?
java - 使用 Java 从 URLS 加载文本的最快方法,无需并发
奇怪的请求,我知道,但我正在开发一个程序作为学习练习,它需要一个 .txt 文件,其中包含一堆指向网络上文本文件的 URL。然后它对每个文本中的每个单词进行哈希处理,并允许用户进行搜索。
我正在构建程序两次,一次没有并发,一次有。我刚刚完成了 sans-concurrency 程序的散列部分,我的时间显示时间与原始文件中 URL 的数量呈线性关系。
不过,该过程中最慢的部分实际上是从 Web 检索 URL。目前我正在这样做
其中 revURL 是从 main 传递给方法的字符串。有没有更快的方法来检索这些文件,或者在不中断并发的情况下,这是否会尽可能快?
iphone - 串行 NSOperation
我有带有单元格集合的表视图控制器,每个单元格显示 2 个值:
––––––––––––––––––––––––<br> | 单元格1 | val1 | val2 |
––––––––––––––––––––––––<br> | 单元格2 | val1 | val2 |
––––––––––––––––––––––––<br> ...</p>
我需要使用以下算法对这些单元执行串行同步操作:
- 设置核心数据并更新 tableView UI
- 迭代单元格
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- 保存和更新 tableView UI
我将 NSOperationQueue 与 NSBlockOperations 一起使用:
使用此代码,最后一个操作 (#3) 在所有迭代完成之前执行。
我正在寻找有关如何正确嵌套操作和队列以维护串行顺序的建议。
ios - 使用 Parse 时 GCD 串行队列似乎没有串行执行
提前感谢您的帮助。我正在尝试创建一个应用程序,允许用户回答问题并为一群人添加自己的问题。我正在从 parse 下载股票问题,出于各种原因,我需要将这些问题按特定顺序加载到主数组中。我正在尝试使用串行 GCD 队列来完成此操作,但这始终在预期结果和相反结果之间切换。这对我来说没有意义,但我无法摆脱这种感觉,即它可能与解析查询使用的异步下载请求有关,并且这里没有其他答案可以解决。
这是我的代码:
这是我写的辅助方法:
再次,非常感谢任何帮助!
concurrency - 两阶段锁定如何帮助避免不可序列化的调度?
现在,我在这里有两笔交易。一致性要求为 A=0 v B=0,其中 A=B=0 为初始值
我知道没有并行执行导致可序列化的计划。所以我想应用两阶段锁定来保证可序列化。
两阶段锁定如何保证可串行化?你能给我举一个这两笔交易的例子吗?
谢谢你。
list - 依次调用任意数量的 WS.url().get()
我有一个我想要按顺序加载和处理(解析、存储到数据库)的 URL 列表 [String]。
我发现只有固定长度的例子,比如:
但我需要处理这只小狗,而不是 url1 和 url2:
非常感谢您提供的任何提示和建议!