However, when several threads of activities run inside an object, explicit synchronisation is usually required. The process of explicitly inserting or removing synchronisation in the program can be error-prone and complicated debug. This form of synchronisation places the burden on the programmer and may restrict parallelism when it is not properly used in which case the performance is affected. Actel provides a rich programming environment in which object oriented techniques and parallelism are exploited. Actel also provides various mechanisms to support intra-object parallelism.
Parallel functions allow concurrent threads within objects.
Multiple future variables are introduced to remove the burden of synchronisation from the user and to maximise the available parallelism. Parallel compound statements are provided to execute simultaneously within parallel function to achieve a finer degree of parallelism. Overloaded futures are introduced as place holder of several results incoming from several threads of the parallel compound statements. These objects can service several message requests at a time and are responsible for balancing the load in the system by a technique called message migration. The technique is more efficient than object migration since the semi-reference mode of communication is used for moving messages and the problems associated with naming and the cost of object are avoided.