示例#1
0
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)
示例#2
0
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)