Ref. Hal.cpp[0]
Each b2g process (parent or app) has a Main Thread[1]. These processes
will have other threads as well, but many operations (such as layout,
JS, and DOM) must take place on the Main Thread because they are not
threadsafe. To make functions robust against being called from the wrong
thread, it's common to use the following:
MOZ_ASSERT(NS_IsMainThread());
NS_IsMainThread()[2] returns true if the currently executing thread is
the Main Thread; and in DEBUG builds, MOZ_ASSERT()[3] will cause the
current process to crash if its condition is false.
In Hal.cpp, this assertion is just wrapped up into a simple function.
--m.
0. http://mxr.mozilla.org/mozilla-central/source/hal/Hal.cpp#76
1.
https://developer.mozilla.org/en-US/docs/XPCOM/Making_cross-thread_calls_using_runnables
2.
http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/MainThreadUtils.h#35
3. http://mxr.mozilla.org/mozilla-central/source/mfbt/Assertions.h#318
On 13-10-22 03:47 PM, [email protected] wrote:
I noticed that in the Hal.cpp (gecko/hal/), there is always a function named
AssertMainThread(); got called in the first line of each function. Such as
SetTimezone or EnableSensorNotification.
Can anyone explain this a bit why this function always there and how it works?
Thanks
_______________________________________________
dev-b2g mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-b2g
_______________________________________________
dev-b2g mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-b2g