title: Detecting OS version and choosing threading functions accordingly
body: <p>Is there a good way to check for OS version (in this case Windows Vista+ or not) and decide at runtime what version of a function is going to be used.</p>
  
  <p>Concretely I am talking about implementing pthreads in Win32 threads. In my ideal case, the pthreads library would determine at program startup which OS is running. If it is Vista+, all function calls will be redirected to the cool new and fast functions, otherwise, the old emulation layer will be used.</p>
  
  <p>So in effect, the library will have two version of each function, one new and one old. And a <em>one-time</em> runtime check would determine at runtime, before the program enters main so to speak, which version it's going to use. I know there's libraries that detect CPU features like SSE at runtime, and use the relevant functions, but I think they check at each function call. That would be too expensive to do in a low-level threading library IMO.</p>
  
  <p>Is this possible? Can function calls be "relinked"/redirected at runtime so speak?</p>
  
  <p>EDIT: crazy things like custom crt startup code would be possible for this (I'm talking about winpthreads for mingw-w64, which provides its own startup code)</p>