There are some attempts in the literature to implement ("hacked") a version of condition variables, using semaphores and other tricks. The conclusion is that it is extremely tricky and potentially dangerous.
I am not an expert on this area at all. I am interested becasue I am trying to find the best approach to make my SMP version as portable as possible. Even when I lack experience on this, I think that claiming superiority of Win32 Threads over pthreads is beyond ridiculous.
From my perspective of a newbie in parallel programming, I find the specifications of pthreads relatively clear. Every time I tried to read something about Win threads is a mess. The article claims that having everything as HANDLE is good. Really? Why is that there are many different ways to create a thread. For instance, it is recommended to create those with _beginthredex rather than CreateThread. The whole specification looks like a hack over another hack.
There are a dozen parallel programming constructs that fall out of the basic atomic lock mechanism. Condition variables are just one of many different ideas, from counting semaphores, to barriers and on up. With regard to chess, my goal is to always minimize waiting/spinning/blocking which is doing no useful work. Given that goal, atomic locks are all that one needs to do a high-performance parallel search.