astobj2: Run weakproxy callbacks outside of lock.

Copy the list of weakproxy callbacks to temporary memory so they can be
run without holding the weakproxy lock.

Change-Id: Ib167622a8a0f873fd73938f7611b2a5914308047
This commit is contained in:
Corey Farrell
2017-10-10 16:09:14 -04:00
parent 65366a435e
commit fd3101e8ad
2 changed files with 26 additions and 19 deletions

View File

@@ -671,6 +671,10 @@ int ao2_weakproxy_subscribe(void *weakproxy, ao2_weakproxy_notification_cb cb, v
* of the cb / data pair. If it was subscribed multiple times it must be
* unsubscribed as many times. The OBJ_MULTIPLE flag can be used to remove
* matching subscriptions.
*
* \note When it's time to run callbacks they are copied to a temporary list so the
* weakproxy can be unlocked before running. That means it's possible for
* this function to find nothing before the callback is run in another thread.
*/
int ao2_weakproxy_unsubscribe(void *weakproxy, ao2_weakproxy_notification_cb cb, void *data, int flags);