Есть ли хороший способ проверить версию ОС (в данном случае Windows Vista + или нет) и решить во время выполнения, какую версию функции планируется использовать.
Конкретно я говорю о реализации pthreadsв Win32 темы.В моем идеальном случае библиотека pthreads будет определять при запуске программы, какая ОС работает.Если это Vista +, все вызовы функций будут перенаправлены на новые крутые и быстрые функции, в противном случае будет использоваться старый слой эмуляции.
Таким образом, в действительности библиотека будет иметь две версии каждой функции, однуновый и один старый.И одноразовая проверка во время выполнения будет определять во время выполнения, прежде чем программа войдет в main, так сказать, какую версию она будет использовать.Я знаю, что есть библиотеки, которые обнаруживают функции ЦП, такие как SSE во время выполнения, и используют соответствующие функции, но я думаю, что они проверяют при каждом вызове функции.Это было бы слишком дорого, чтобы сделать это в низкоуровневой библиотеке потоков IMO.
Возможно ли это?Можно ли, так сказать, «перекомпоновывать» / перенаправлять вызовы функций во время выполнения?
РЕДАКТИРОВАТЬ: для этого возможны такие сумасшедшие вещи, как пользовательский код запуска crt (я говорю о winpthreads для mingw-w64, который предоставляет свой собственныйкод запуска)