“并行”执行功能

 收藏

并行的含义不是并行处理的含义。我只是说,如果算法A和B由两个操作序列(a_1,a_2,...)和(b_1,b_2,...)表示,则执行的操作序列为(a_1,b_1,a_2 ,b_2,...)。并非必须从A开始严格执行1次操作,再从B开始进行1次操作。此数字可能会有所不同。但是,这应该在只有一个执行线程(没有内置并行性)的系统上工作。 当A或B终止时,派生的“合并”算法应终止其执行。

两个函数A和B共享所有输入数据,但是它们不会对其执行任何写操作。

如何在C ++中实现它?

回复
  • bquia 回复

    我需要的不是那么复杂,但是我不知道实现它的方法。换句话说,我想模拟两个线程合而为一的并行执行。怎么做?

    注意:执行功能A,然后执行功能B的解决方案不起作用。我希望它们在一个线程中同时运行。 我希望这听起来不会荒唐。这种需求的原因是这样的“并行性”将确保组合算法的终止。

  • wiusto 回复

    我很多年前用MS-DOS 6.X实现了这样的东西(我认为)。它是执行上下文堆栈切换的一系列功能,因此可以有任意数量的“线程”。与现代的MS-Windows或* nix不同,该程序仅在当前运行的线程请求时才切换上下文。因此,与其运行您描述的线程-A_1 B_1 A-2 B_2等,不如运行A-1 A-2 A-3 A-4 B-1 B-2 A-5 A-6 B-3 B-4 B-5等

  • fharum 回复

    代码中的操作也是如此。分别由a_1,a_2表示,不同的功能在一起,无论如何我们都可以表示具有时间限制的特定子过程。如果可以,请尝试用最短时间表示法比较2个堆栈,以查看可以最快执行的操作。

    无论如何,作为我的语言初学者,当我主要经历顺序编程时,很难理解并行动力。