Plain modules run in parallel and we do sometimes need to synchronise access to data or electronics. This is done by the transaction statement. Transaction will delay execution until it is granted exclusive write access to a variable within the domain. This act as an excellent Multi-threading mechanism because it forces the developer to access interface components inside a transaction.
In simple words you just code with no worries about multi-threading issues.