我是编程的新手,也是 Common Lisp 的新手。我正在尝试解决以下问题:
有流源(S1、S2、S3)、两个处理器(P1、P2)(处理器不是指 CPU 处理器,而是处理功能/子系统)和四个流目的地(D1、D2、D3、 D4)。通过流,我的意思是数据连续出现,但可能是间歇性的。所以读/写操作可能会阻塞。来自流的数据需要聚合,然后根据它们是什么,由处理器之一进行处理。每个处理器(从其输入聚合)产生四种子聚合,然后将这些子聚合发送到上述四个目的地之一。
我对这个问题的伪代码是这样的:
三个循环,S1、S2、S3 各一个,用于数据聚合和调度。对于特定来源(例如 S2),伪代码是:
loop-2 : read from S2,
when sufficient data aggregate,
if aggregate is kind-1 send to P1
else send to P2.
Run Code Online (Sandbox Code Playgroud)
两个循环,每个循环一个用于 P1、P2,用于处理和解聚合。对于特定的处理器(比如 P1),伪代码是:
In a loop for P1: take aggregate of kind-1,
process it to produce one or some of four sub-aggregates.
case: sub-aggregate 1 -> serialize and send/write to D1,
sub-aggregate 2 -> serialize and send/write to D2,
sub-aggregate 3 -> serialize and send/write to D3,
sub-aggregate …Run Code Online (Sandbox Code Playgroud) concurrency multithreading common-lisp event-loop green-threads