Multithreading: CreateThread vs _beginthread

MSDN warns in two or three places that threads calling C runtime routines from a program built with LIBCMT.LIB must be created with _beginthread, not with CreateThread. In two of these places, it mentions MSVCRT.LIB in the same breath, so to speak, but only warns about LIBCMT.LIB.

Can I call C runtime functions from a thread started with CreateThread if I just build with MSVCRT.LIB (/MD) instead of LIBCMT.LIB (/MT) ?




  • [green]Yes, you can, but should NOT. This is because _beginthread() maintains global variables correctly as required by some c routines like strtok() which stores the current token found as a global var. _beginthread() also takes proper care of ctors and dtors[/green]


Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


In this Discussion