Difference between Hoare vs Java Monitor

Asked

Viewed 23 times

1

I’m trying to figure out something I haven’t quite figured out yet why.

In my book of SD, you present the following statement:

Nos monitores de Hoare, se uma thread (dentro do monitor) executa x.notify(), o monitor é cedido para uma das threads acordadas. Isto permite que a thread execute

if(!B) x.wait();

para aguardar pelo estabelecimento da condição B (quando a thread retomar a execução é certo que B permanece verdadeiro).
• Nos monitores Java, a thread que executa x.notify() permanece dentro do monitor; a thread acordada só prossegue quando a primeira dexar o monitor. Isto exige que o teste da condição B seja feito da seguinte forma:

while(!B) x.wait();

pois B pode ter mudado quando a thread acordada retomar a execução

Even with this explanation, I still can’t understand why Java monitors use While(! B) and Hoare monitors use if(! B)

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.