in reply to The internals of flock()
flock combined with LOCK_NB (Non-Blocked) and (LOCK_SH (Shared Lock) or LOCK_EX (Exclusive Lock)) would cause flock to return imediately, like that it would not wait infinately. You could also fork so that the parent would wait to get the lock and the child should do other things and you should be aware that fork does not create another instance of a lock. And if you are doing something using NFS (Network File System) with mounted disks and exported directories with files and if you need locking you can't use flock, there is another one called fcntl.
Hope that this helped a little, if not .. sorry dude! I'm ignorant too!