Clean up the ParkingLot uparking API a bit
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Apr 2016 04:25:02 +0000 (04:25 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Apr 2016 04:25:02 +0000 (04:25 +0000)
commitffc2926d144fca7f20a11021dc42213a08498eb6
tree82f42ec25aa16cac4be65bb31b9bc7a5d3a479bb
parent46a9c07399e4dd6e287b768a1550256d968d7ad0
Clean up the ParkingLot uparking API a bit
https://bugs.webkit.org/show_bug.cgi?id=156746

Reviewed by Saam Barati and Geoffrey Garen.

Previously, unparkOne() would either return a boolean to tell you if there are any more threads on
the queue or it would pass your callback a pair of booleans - one to tell if a thread was unparked
and another to tell if there are any more threads. This was an annoying inconsistency. What if you
wanted to know if unparkOne() unparked a thread but you don't care to use callbacks?

This fixes unparkOne() to use a struct called UnparkResult for both of its variants. This makes the
code a bit cleaner.

* wtf/Atomics.h: Add some more atomic ops.
(WTF::Atomic::exchangeAndAdd):
(WTF::Atomic::exchange):
* wtf/Condition.h: Change calls to unparkOne().
(WTF::ConditionBase::notifyOne):
* wtf/Lock.cpp: Change calls to unparkOne().
(WTF::LockBase::unlockSlow):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally):
(WTF::ParkingLot::unparkOne):
* wtf/ParkingLot.h: Switch to using ScopedLambda and introduce UnparkResult.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@199760 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WTF/ChangeLog
Source/WTF/wtf/Atomics.h
Source/WTF/wtf/Condition.h
Source/WTF/wtf/Lock.cpp
Source/WTF/wtf/ParkingLot.cpp
Source/WTF/wtf/ParkingLot.h