LINUX.ORG.RU

Как в C++11 компиляторах реализован какой-нибудь std::thread или std::mutex?

 


0

2

На конкретной платформе компилятор должен будет воткнуть какой-то вызов ядерный или библиотечный типа pthread_create() и т.п. Т.е. компилятор не просто должен переводить говнокод юзера в инструкции процессора, а ещё и понимать что-то в абстракциях конкретной ОС? А например LLVM - там же сначала всё преобразуется в IR, а потом уже бакэндом в x86-код. И что, в IR тоже прописывается pthread_create()?

Компилятор этим не запаривается, всё решается на уровне реализации стандартной библиотеки (которая, естественно, в платформо-зависимых местах варьируется от ОС к ОС).

yoghurt ★★★★★
()
#ifdef WIN

void pthread_create(...) {
 WinApiThreadCreate()...
}

#elseif UNUX

void pthread_create(...) {

}

#endif

А ещё - конкретно это вообще не забота компилятора - его натравят на предварительно собранную из кода под целевую платформу библиотеку.

alex4321
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.