Кроссплатформенный способ получения потока в C / C ++? - PullRequest
6 голосов
/ 26 ноября 2010

В C и C ++ есть кросс-платформенный способ получения потока? Что-то вроде sched_yield () или Sleep (0)? SDL_Delay (0) всегда дает или он вернется немедленно в некоторых реализациях?

Ответы [ 2 ]

9 голосов
/ 26 ноября 2010

Учитывая, что ни в C, ни в C ++ (вплоть до C ++ 98) нет "потоков", нет полностью кроссплатформенного способа для потока, который дает.

В C ++ 0x есть функция std::this_thread::yield(), которую можно вызвать для yield. Это будет переносимым способом для потока, когда люди начнут использовать библиотеку потоков C ++ 0x.

4 голосов
/ 26 ноября 2010

в случае c ++, boost::thread::yield() делает то, что вы просите.На платформах с потоками posix pthread_yield() выполняет ту же функцию для C и всего, что связано с ним.На платформах, где это не останавливает поток и не запускает другой, это происходит потому, что планировщик не поддерживает эту функцию.Я не думаю, что на самом деле существует много таких платформ.

...