I've restructured the logic to avoid the need for status_mutex_. On
receipt of an 'event' (new listener, new position, new reverse
geocode, shutting down), the callback functions no longer perform any
logic. They instead simply set a flag and signal an event to the run
loop. The run loop thread performs all of the logic, and this avoids
the need for a lock on the status variables.

This approach does, however, introduce the need for other mutexes to
protect data which is now accessed in both the callback functions and
the run loop. Overall, the structure isn't much simpler, but it does
avoid the danger of deadlock between the position and status mutexes.

New snapshot uploaded.

Reply via email to