| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
| |
--
MOS_MIGRATED_REVID=99961435
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Ended up not being necessary; I was able to rephrase things using SettableFuture instead.
*** Original change description ***
Introduce a simple concurrent Multimap-like data structure with reference counting.
--
MOS_MIGRATED_REVID=96884190
|
|
|
|
|
|
|
| |
shutdown operations.
--
MOS_MIGRATED_REVID=96351438
|
|
|
|
|
|
|
| |
counting.
--
MOS_MIGRATED_REVID=96024804
|
|
|
|
|
|
|
| |
needed. Also clean up some lint warnings/unresolved references.
--
MOS_MIGRATED_REVID=92380618
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=90282858
|
|
|
|
|
|
|
|
|
|
|
| |
(i) Change the semantics of KeyedLocker.AutoUnlocker#close such that it can be called at most once per AutoUnlocker instance.
(ii) Change KeyedLocker.AutoUnlocker#close to throw a IllegalUnlockException (RuntimeException) on error, rather than leave the behavior intentionally underspecified.
(iii) explicitly mention in AutoLocker#lock that a thread can call lock(k) multiple times before unlocking. Combined with (i), this implies that KeyedLocker#lock implementations will want to return fresh AutoUnlocker instances.
These semantics are bit nicer to use anyway, but I also want them because I will soon be introducing KeyedLocker#lockBatch, and it's much easier to specify that given the above.
--
MOS_MIGRATED_REVID=90259645
|
|
|
|
|
|
|
| |
mutexes, and RefCountedMultisetKeyedLocker, an efficient implementation of this abstraction.
--
MOS_MIGRATED_REVID=88000985
|
|
--
MOE_MIGRATED_REVID=85702957
|