Synchronization among processes uses lock. fml8 provides flock(2) or lockf(2) based lock mechanism.
After 2003/03, fml8 provides more granular not giant lock.
Each resource defines each lock channel name.
For example, Mail::Delivery related class accesses the member list. It needs several locks.
Mail::Delivery::SMTP needs lock of member list. FML::Send and FML::Process::Delivery locks member list access in callling Mail::Delivery::SMTP.
Instead Mail::Delivery::Queue just sees the mail queue. The function can access the queue concurrently, also. So this module does not need lock.
Generally speaking, modules using maps require lock. For example, FML/Command/UserControl.pm and FML/Command/Auth.pm needs write lock, but FML/Credential.pm needs only read lock.
It is useful if fml8 provides reader writer lock. But it is not implemented. Currently we attension we use short critical region.
Copyright (C) 1993-2022 Ken'ichi Fukamachi mail:< fukachan at fml.org >