我有一个在后台工作的 P2P 文件传输应用程序,只有在两台机器都不使用时才应该激活文件共享。假设在一台与其他n台机器相连的机器上,共享程序在n+1 个线程中运行以下代码:
/* For eache one of the n peers */
synchronized void upload(Peer p) {
while(p.notFinished()) {
while(isBusy() || p.isBusy())
wait();
p.sendNextMB();
}
}
synchronized void report() {
while(true) {
while(!isBusy()) wait();
for(Peer p: peers) p.sendBusy();
while(isBusy()) wait();
for(Peer p: peers) p.sendIdle();
}
}
我的问题是,一般而言,如何以事件驱动的角度来实现这个程序?我如何以及为什么在每一刻选择下一个要执行的事件?
此致