Здравствуйте Vodka, Вы писали:
V>Здравствуйте TepMuHyc, Вы писали:
TMH>>Здравствуйте McQwerty, Вы писали:
MQ>>>Возможно-ли использование CreateThread вместо _beginthreadex если MQ>>>используется версия библиотеки "Multithreaded DLL" а не "Multithreaded"? TMH>>Ты можешь использовать _любую_ библиотеку с любой из этих функций.
TMH>>Реальные отличия у CreateThread и _beginthreadex следующие: TMH>>CreateThread TMH>> -- это функция Win32 API доступная только на платформе Windows TMH>> -- ниточная функция должна иметь сошлашение по вызову WINAPI или __stdcall и должна TMH>> возвращать DWORD TMH>>_beginthreadex TMH>> -- это функция вроде бы совместимая со стандартом ANSI и по идее доступна TMH>> на других платформах TMH>> -- ниточная функция должна иметь сошлашение по вызову cdecl и ничего не должна TMH>> возвращать (т.е. void)
V>Основное отличие состоит в том, что _beginthreadex ещё кое-что делает Run-Time Library, в частности V>инициализирует такие переменные как _errno. V>Поэтому, если нет вызовов функций Run-Time Library, то можно обойтись и CreateThread.
Вопрос был связан со следующей фразой из MSDN:
"You must use _beginthread instead of CreateThread in C programs built with LIBCMT.LIB if you intend to call C run-time functions."
LIBCMT — это "Multithreaded" (опция /MT компилятора).
MSVCRT — это "Multithreaded DLL" (опция /MD).
Если я использую /MD — могу я вызывать RTL-функция из потоков созданных CreateThread'ом?