Not a good example but that's the general idea, yes.

Picture this. DBWR is about to write a block and detects there is an associated redo still unwritten so DBWR can't write the block, isnt' it?

What happens then?... DBWR sends a request for service to LGWR and sets a LGWR-semaphore to Unix asking Unix to activate LGWR then DBWR orders a margarita and sits pretty waiting to see a DBWR-semaphore - DBWR is now waiting in an event, which event?... the DBWR-semaphore a.k.a. log-file-sync or something like that. On time, Unix will run LGWR which will write the offending redo then LGWR will set DBWR-semaphore which will tell DBWR to try again.

Hope this helps.