6e8fbca745
match the genesis editor version 1.3.0.653.
27 lines
1.3 KiB
Plaintext
27 lines
1.3 KiB
Plaintext
/**
|
|
@namespace Interface
|
|
|
|
Interface objects offer asynchronous access to important Nebula3 subsystems,
|
|
like IO, Audio and Rendering. They are the key mechanism in Nebula3
|
|
to make efficient use of multicore CPUs.
|
|
|
|
Interface objects are thread-global singletons which encapsulate an
|
|
entire Nebula3 subsystem. In fact each Interface object initializes a minimal
|
|
Nebula3 runtime which runs in a separate thread. This works great because
|
|
all Nebula3 singletons are thread-local (the only exception are Interface
|
|
objects which are singletons across threads). So code running in
|
|
a parallel thread will only see the Nebula3 server objects which have
|
|
been created in this thread. This parallel approach simplifies the
|
|
implementation of Nebula3 classes, since only the code which handles
|
|
communication across threads has to be thread safe.
|
|
|
|
Communication with Interface objects happens through normal Message
|
|
objects. To instruct an Interface object to execute a task in
|
|
parallel to the main thread, just create a Message object, initialize
|
|
it and send it through to the Interface's Send() method. The Send()
|
|
method will return immediately and the calling thread is free to
|
|
do other stuff while the task is executing in the Interface object's
|
|
worker thread. If a result is desired, the calling thread can
|
|
either poll or wait for completion of the original message.
|
|
*/
|