Synchronization (computer science): Difference between revisions

Content deleted Content added
Line 76:
 
==Support in programming languages==
In [[Java (programming language)|Java]], one way to prevent thread interference and memory consistency errors, blocksis ofby wrapping code arein wrapped intoa '''synchronized''' ''(lock_objectsomeObject){...}'' sectionssection. This forces any thread to acquire the said lock of the object represented by 'someObject' before it can execute the block. The lock is automatically released when the thread which acquired the lock, and is then executing the block, leaves the block or enters the waiting state within the block. Any variable updates, made by a thread in a synchronized block, become visible to other threads when they similarly acquire the lock and execute the block.
 
Java ''synchronized'' blocks, in addition to enabling mutual exclusion and memory consistency, enable signaling—i.e., sending events from threads which have acquired the lock and are executing the code block to those which are waiting for the lock within the block. This means that Java synchronized sections combine functionality of mutexes and events. Such primitive is known as [[Monitor (synchronization)|synchronization monitor]].