Yup, that's a good one!
The concepts themselves can be made to work with Windows, it's just that you
have to use completely different means to get there... Usually, it turns out
to be a bit complex and "tedious", indeed...
I recommend taking a good look at:
You are well on your way to understanding why POSIX Threads are superior to
Windows Threads. For instance, well, here are two small examples:
-- It's rather trivial to create a Windows Event primitive with PThreads...
It's no so trivial to create a condition-variable with Windows Threads...
-- It's rather trivial to create Thread-Specific-Storage (TSS) scheme with
PThreads, it's fairly cumbersome to create it with Windows Threads (e.g.,
it's called Thread-Local-Storage (TLS) over in the WinWorld)...
I am sure that this list has the potential to be a mile long!