Если вы хотите, чтобы ваш код был действительно переносимым, то, возможно, лучше держаться подальше от различных библиотек, которые разбросаны по Интернету. В какой-то момент вы найдете платформу, которую они не поддерживают, и затем вам придется создать собственную ветку.
Это также не сложная проблема, и может быть хорошим упражнением для создания кроссплатформенного кода.
Я бы предложил вам создать класс, например, CThread, который имеет отдельные реализации .cpp для каждой платформы и чисто виртуальную функцию execute (), которая вызывается после создания / запуска потока.
Это позволяет реализовать весь код создания потоков и код сна / выключения / приоритета с использованием наиболее подходящего API для платформы. Вам также может понадобиться заголовок (например, ThreadTypes.h), который содержит определения / typedefs для каждой платформы.
1009 * Е.Г. *
// ThreadTypes.h
#if defined(PLATFORM_WIN) || defined(PLATFORM_XBOX)
typedef DWORD ThreadID
#elif defined(PLATFORM_PS3)
// etc etc
#endif
Вот как я написал весь свой кросс-платформенный код потоков для таких платформ, как PC / PS2 / PS3 / 360 / Wii. Это также хороший пример для таких вещей, как мьютекс и семафоры, которые, если у вас есть потоки, которые вам обязательно понадобятся в какой-то момент:)