CreateThread()
is a raw Win32 API call for creating another thread of control at the kernel level.
_beginthread()
& _beginthreadex()
are C runtime library calls that call CreateThread()
behind the scenes. Once CreateThread()
has returned, _beginthread/ex()
takes care of additional bookkeeping to make the C runtime library usable & consistent in the new thread.
In C++ you should almost certainly use _beginthreadex()
unless you won’t be linking to the C runtime library at all (aka MSVCRT*.dll/.lib).