Re[3]: _beginthreadex vs CreateThread
От: McQwerty Россия  
Дата: 26.10.01 07:47
Оценка:
Здравствуйте 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'ом?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.