1

鉴于这种情况,我被要求绘制具有各种颜色标签的盒子,这些颜色标签指示盒子将被绘制的颜色,并且这些盒子到达一个盒子容量为 2 的绘制单元,这意味着它只能绘制 2同时开箱。本机不能同时绘制不同的颜色。在更改颜色并绘制其他框之前,它必须等待一种颜色的框完成。

进程和线程将在进程中使用。问题是,我被要求以先进先出的方式绘制盒子。考虑下面的例子:

Box #1    Box #2    Box #3    Box #4    Box #5
  R         B         G         R         B

我必须按照给定的顺序绘画:

Box #1, Box #4, Box #2, Box #5, Box #3
  R        R       B       B        G

我可以在指针的帮助下安排单元用于绘制框(在这种情况下为 RBG)的颜色序列,但我不能保证这些框将按给定的顺序绘制,即顺序可能是4 1 5 2 3而不是1 4 2 5 3,因此我将违反 FIFO 规则,因为将有 #ofBoxes 进程将运行(不是同时运行,总共)并且顺序未确定。我能想到的唯一方法是(不知何故)考虑分叉进程(每个盒子)的顺序,并以某种方式优先考虑绘制操作,但我认为这甚至不是一个解决方案。这可以通过顺序方法(排序然后绘制)轻松解决,但考虑到 IPC 和并发进程,排序根本无济于事,至少不能保证任何排序。

我有点卡在这里,我只是在询问解决问题的提示,而不是确切的解决方案。请尽可能抽象。提前致谢。

编辑

请原谅我没有提到一些必要的细节。我被迫将每个盒子建模为一个单独的进程,而不是使用信号进行同步。

4

1 回答 1

1

您始终可以一个接一个地启动流程,并wait在开始下一个流程之前完成新流程。

或者您可以使用管道将所有进程链接在一起,使stdout第一个进程的连接到stdout第二个进程,依此类推。然后在子进程中,您不会继续,直到您从前一个进程中获得一些输入才能继续。

或者使用命名信号量之类的东西来相互发送信号。

于 2013-05-04T23:57:35.433 回答