Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Remove concurrent access to objects from worker threads #667

Closed
kkaefer opened this issue Dec 1, 2014 · 2 comments
Closed

Remove concurrent access to objects from worker threads #667

kkaefer opened this issue Dec 1, 2014 · 2 comments
Assignees
Labels
Core The cross-platform C++ core, aka mbgl

Comments

@kkaefer
Copy link
Member

kkaefer commented Dec 1, 2014

Currently, we have a number of objects that are shared across threads. This means we're locking these objects when accessing them. To remove lock contention, and to align the architecture with JS, we should move away from shared memory objects.

The way JS (web workers) operates is by having a read-only state of the object in question (e.g. the sprite/glyph atlas). When a write access is required, the worker thread is suspended and the operation is carried out in the main thread (e.g. adding glyphs to the glyph atlas). Then, the updated state is sent to the worker thread again.

@ljbade
Copy link
Contributor

ljbade commented Dec 1, 2014

Is there a way to do this nicely with C++, ie worker thread pausing and updating happens automatically when you call some write access method? (ie all all non const methods)

@ChrisLoer
Copy link
Contributor

Fixed with #8341.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Core The cross-platform C++ core, aka mbgl
Projects
None yet
Development

No branches or pull requests

5 participants