У меня есть приложение для передачи файлов 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();
}
}
Мой вопрос заключается в том, как в целом можно реализовать эту программу с точки зрения событий? И как и почему я выберу в каждый момент, какое событие будет следующим?
С наилучшими пожеланиями