I'm an experienced Direct3D 9 developer, but I'm new to Direct3D 11. I'm looking for how to write my main loop to drive two (or more) heads of one GPU in different modes (most importantly, at different refresh rates), and it's very important that output is sync'ed to the Vertical Refresh. So imagine driving one head at 1920x1080 @ 30 Hz and a second head at 2048x1080 @ 24 Hz.
I'm looking for how to structure my main loop and what DXGI / Direct3D API calls to make. I assume I'll either need two threads, one driving each head, or I'll need one thread that can wait for the "next" head to become available (kind of like the way WaitForMultipleObjects works.) It's very important that I do not eat up unnecessary CPU spinning, polling, or otherwise chasing the raster.
In the real world, I'd like to drive 4 heads at once, each potentially in a different resolution and refresh rate. How do I set up the Present loop in Direct3D 11?