mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 20:30:41 +00:00

This commit adds `ThreadPtr{Handle, Holder}` to wrap an `XpCom` object with thread-safe refcounting. These are analagous to `nsMainThreadPtr{Handle, Holder}`, but can hold references to objects from any thread, not just the main thread. `ThreadPtrHolder` is similar to `ThreadBoundRefPtr`. However, it's not possible to clone a `ThreadBoundRefPtr`, so it can't be shared among tasks. This is fine for objects that are only used once, like callbacks. However, `ThreadBoundRefPtr` doesn't work well for loggers or event emitters, which might need to be called multiple times on the owning thread. Unlike a `ThreadBoundRefPtr`, it's allowed and expected to clone and drop a `ThreadPtrHolder` on other threads. Internally, the holder keeps an atomic refcount, and releases the wrapped object on the owning thread once the count reaches zero. This commit also changes `TaskRunnable` to support dispatching from threads other than the main thread. Differential Revision: https://phabricator.services.mozilla.com/D20074 --HG-- extra : moz-landing-system : lando
…
…
…
…
…
…
…
…
…
…
…
…
…
An explanation of the Mozilla Source Code Directory Structure and links to project pages with documentation can be found at: https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure For information on how to build Mozilla from the source code, see: https://developer.mozilla.org/en/docs/Build_Documentation To have your bug fix / feature added to Mozilla, you should create a patch and submit it to Bugzilla (https://bugzilla.mozilla.org). Instructions are at: https://developer.mozilla.org/en/docs/Creating_a_patch https://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree If you have a question about developing Mozilla, and can't find the solution on https://developer.mozilla.org, you can try asking your question in a mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups are accessible on Google Groups, or news.mozilla.org with a NNTP reader.] Nightly development builds can be downloaded from: https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ - or - https://www.mozilla.org/firefox/channel/desktop/#nightly Keep in mind that nightly builds, which are used by Mozilla developers for testing, may be buggy.
Description
Read-only Git mirror of the Mercurial gecko repositories at https://hg.mozilla.org. How to contribute: https://firefox-source-docs.mozilla.org/contributing/contribution_quickref.html
Languages
JavaScript
32.3%
C++
25.4%
HTML
21%
C
10.8%
Python
2.8%
Other
7.2%