_beginthread 和 CreateThread

_beginthread 和 CreateThread

CreateThread函数是用来创建线程的Windows函数,_beginthreadex是CRT库函数。beginthreadex中调用CreateThread,提倡使用_beginthreadex。

有些CRT的函数象malloc(),  fopen(),  _open(),  strtok(),  ctime(),  或localtime()等函数需要专门的线程局部存储的数据块,这个数据块通常需要在创建线程的时候就建立,如果使用CreateThread,这个数据块就没有建立,这样的线程中还是可以使用这些函数而且没有出错,实际上函数发现这个数据块的指针为空时,会自己建立一个,然后将其与线程联系在一起,这意味着如果你用CreateThread来创建线程,然后使用这样的函数,会有一块内存在不知不觉中创建,遗憾的是,这些函数并不将其删除,而CreateThread和ExitThread也无法知道这件事,于是就会有Memory  Leak。_beginthreadex和_endthreadex就对这个内存块做了处理,所以没有问题。

你可能感兴趣的:(_beginthread 和 CreateThread)