平行打印后的保证打印顺序

问题描述 投票:1回答:1

我有X个内核并行完成唯一的工作,但是它们的输出需要按顺序打印。

Object {
   Data data
   int order
}

我已经尝试将对象完成并行工作后放到最小的堆中,但是,即使这是一个很大的瓶颈。

有什么办法可以并行完成工作并保证打印顺序?我的问题有一个已知术语吗?其他人以前遇到过吗?

ios multithreading parallel-processing grand-central-dispatch nsoperationqueue
1个回答
0
投票

Q我的问题是否有已知的term

,有:: a con·​tra·​dic·​tion | [ ˌkän-trə-ˈdik-shən ]

[[contradiction的定义 …2a:主张或暗示某事物的真实性和虚假性的命题,陈述或短语//…矛盾的两个部分都不可能是真实的…-托马斯·霍布斯2b:各部分彼此矛盾的陈述或短语//圆角正方形在术语上是矛盾的3a:逻辑不一致3b:一种内在因素,行动或主张相互矛盾或矛盾的情况来源:Merriam-Webster

计算机科学,从系统理论中借用了术语[[{ PARALLEL | SERIAL | CONCURRENT },并尊重每种此类操作的独特性(且绝不重叠),其中:]]

[[PARALLEL]

工作单位的编排意味着,每个工作单位:

a]] >>开始and b) 被执行 c]被完成[[同时,即所有元素都一次进入/退出[PARALLEL]

同时进行详细说明,没有其他说明。[SERIAL]工作单元的编排意味着,所有工作单元都以一个静态的,已知的,特定的顺序进行处理,以这样的顺序启动一个或多个工作单元。 (已知)-在上一个完成工作之后的下一个-即one-after-another,其他情况除外。如果资源和系统条件允许(遵守调度程序优先级),

[CONCURRENT]工作单元编排允许启动多个工作单元,从而导致执行顺序未知和执行时间未知完成,因为前者和后者都取决于未知的外部性(系统条件和(非)资源的可用性,这是/将需要特定工作单元的详细说明)

而在[SERIAL]

类型的处理中存在
OR-PRIOR
的已知,固有嵌入的含义(因为它已预先连接到工作处理流程代码),在

[CONCURRENT]

中都没有这样的含义,其中机会性调度使系统状态不确定的随机结果成为order,由所有其他外部性的重合,并且根据定义,相同的wished-to-have order主要是奇异值为真[PARALLEL],因为所有开始/执行/完成在同一时间-因此,以[PARALLEL]方式执行的所有工作单元都没有其他机会,而是同时第一和最后一次
Q有什么办法可以并行完成并保证打印顺序?

No,除非您有意或无意违反了[PARALLEL]编排规则,并将re [[SERIAL] -iser)逻辑重新输入到工作初始化中,以强制执行任何此类希望的排序,这是未知的,对于最初的[PARALLEL]工作单元的编排来说,自然性就不那么自然了[[(这是python中的常见做法-使用GIL垄断者灌输的步进-作为该步骤的示例]

Q

以前是否有人遇到过?
是。每个学期都在StackOverflow上再次出现此问题或类似假定的问题。
© www.soinside.com 2019 - 2024. All rights reserved.