https://issues.apache.org/bugzilla/show_bug.cgi?id=46336





--- Comment #6 from Andreas L. Delmelle <adelme...@apache.org>  2008-12-22 
16:03:38 PST ---
Created an attachment (id=23047)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=23047)
patch proposal


Another attempt, slightly better IIC, but still not bullet-proof.

If getFontInfos() returns an outdated entry, and another thread has already
started the removal/readdition, then the thread will wait until it is notified
by either addFont() or registerFailedFont().

Tricky bits:
- after the notification, we're still not sure that it stems from the same font
we're waiting for... (any addFont() or registerFailedFont() will trigger
notifyAll())
- if the removal/readdition has begun, and one thread is busy reloading the
font, getFontInfos() will still return null (parallel loading still remains
possible)

Remaining question (not immediately clear to me):
Is it conceivable that one thread removes the outdated entry, yet neither
addFont() nor registerFailedFont() is called later? It didn't seem so, but
should that be the case, the wait() method should probably be passed a
reasonable maximum duration to avoid eternal sleep.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

Reply via email to