多线程版本的RunTime Library

1、unsigned long _beginthreadex(

void *security,;相当于SECURITY参数
unsigned stack_szie,;新线程的堆栈大小,以字节为单位
unsigned (__stdcall *start_address)(void*)),;线程启动时所执行的函数。
;对应的WIN32数据类型是LPTHREAD_START_ROUTINE
void*arglist,;新线程将收到的一个指针,不会做拷贝操作,只是单纯地被传递过去
unsigned initflag,启动时的状态标记,WIN32数据类型为DWORD
unsigned *thrdaddr;新线程的ID,WIN32数据类型为LPDWORD
)
返回的unsigned long是一个WIN32 HANDLE,指向新的线程。
2、_endthreadex(unsigned);
可以被线程在任意时间调用,需要一个表示线程返回代码的参数。事实上,当线程的startup函数返回时,_endthreadex会自动被runtimelibrary调用。
3、createtrhead和_beginthreadex
(1)如是主线程以外的任何线程进行以下操作,你就应使用多线程版的 RunTimeLibrary,并使用_endthreadex和_beginthreadex:
A。使用malloc()和free(),或是在c++程序中使用new和delete。
B。调用STDIO。H或IO。H声明的任何函数。
C。使用浮点变量或浮点运算函数。
D。调用任何一个使用静态缓冲区的RUNTIME函数,如asctime()、strtok()或rand()
如果worker线程没有使用上述函数,那么单线程的runtimelibrary以及createprocess()都是安全的.

你可能感兴趣的:(多线程,C++,c,Security,C#)