示例#1
0
文件: PCB.py 项目: Hexfall/Almennt
class PCB:
    def __init__(self, parent, index, priority):
        self.ready = True
        self.parent = parent
        self.chilren = LinkedList()
        self.resources = LinkedList()
        self.index = index
        self.prio = priority
        if not parent == None:
            parent.AddChild(self)
    
    def Block(self):
        self.ready = False
    
    def Unblock(self):
        self.ready = True
    
    def AddChild(self, child):
        self.chilren.Add(child)

    def AddResource(self, resource):
        self.resources.Add(resource)
    
    def ReleaseResources(self):
        pcbs = []
        for resource in self.resources.GetList():
            pcb = resource.ConditionalRelease(self)
            resource.TakeOffWaitlist(self)
            if not pcb == None:
                pcbs.append(pcb)
        return pcbs

    def RemoveResource(self, index):
        self.resources.RemoveIndex(index)
    
    def Remove(self):
        self.parent.RemoveChild(self.index)

    def RemoveChild(self, index):
        self.chilren.RemoveIndex(index)

    def __str__(self):
        return str(self.index)
    
    def __repr__(self):
        return str(self)