Threading model – BrightSign BrightScript 3.0 Reference Manual User Manual

Page 32

Advertising
background image

27

THREADING MODEL

BrightScript runs in a single thread. In general, BrightScript object calls are synchronous if they return quickly, and
asynchronous if they take a substantial amount of time to complete. For example, methods belonging to the roArray object
are all synchronous, while the

Play() method that is part of the roVideoPlayer object will return immediately (it is

asynchronous). As a video plays, the roVideoPlayer object will post messages to the message port, indicating such
events as “media playback finished” or “frame x reached”.

The object implementer decides whether a BrightScript object should launch a background thread to perform a
synchronous operation. Sometimes, an object will feature synchronous and asynchronous versions of the same method.

This threading model ensures that the script writer does not have to deal with mutexes and other synchronization objects.
The script is always single threaded, and the message port is polled or waited on to receive events into the thread. On the
other hand, those implementing BrightScript objects have to consider threading issues: For example, the roList and
roMessagePort objects are thread-safe internally, allowing them to be used by multiple threads.

Advertising