blockevent.java
来自「对于CPU线程调度的模拟」· Java 代码 · 共 37 行
JAVA
37 行
package simcpu;
public class BlockEvent extends Event {
public BlockEvent(int time, EventDriver driver, SimSystem sys) {
super(time, driver, sys);
}
@Override
public void handel() {
SimThread curThread = sys.getRunningThread();
curThread.setState(State.BLOCKED);
int ioTime = sys.getRunningThread().getCurTask().remainingTime;
driver.predict(new IoInteruptionEvent(driver.now + ioTime, driver, sys,
curThread));
sys.setRunningThread(null);
SimThread nextThread = sys.schedul();
if(nextThread==null) {
sys.setCpuBusy(false);
return;
}
sys.readyQueue.remove(nextThread);
int overhead = (curThread.getPid() == nextThread.getPid() ? DataSource
.getThreadSwith() : DataSource.getProcessSwitch());
driver.predict(new OverheadEvent(driver.now + overhead, driver, sys,
nextThread));
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?