class queue05: def __init__(self): self.in_q = Queue(int8, 'in', maxsize=2) self.out_q = Queue(int8, 'out', maxsize=2) self.append_worker(self.main) def main(self): while is_worker_running(): if not self.in_q.empty(): d = self.in_q.rd() if not self.out_q.full(): self.out_q.wr(d)
class queue06: def __init__(self): self.in_cmd = Queue(int8, 'in', maxsize=2) self.din0 = Port(int, 'in') self.din1 = Port(int, 'in') self.out_q = Queue(int8, 'out', maxsize=2) self.append_worker(self.main) def calc(self, cmd): if cmd == 0: return self.din0.rd() + self.din1.rd() elif cmd == 1: return self.din0.rd() - self.din1.rd() elif cmd == 2: return self.din0.rd() * self.din1.rd() return 0 def main(self): while is_worker_running(): if not self.in_cmd.empty(): cmd = self.in_cmd.rd() ret = self.calc(cmd) if not self.out_q.full(): self.out_q.wr(ret)