|
linux下和windows下的 创建线程函数
1 #ifdef __GNUC__
2 //Linux
3 #include <pthread.h>
4 #define CreateThreadEx(tid,threadFun,args) pthread_create(tid, 0, threadFun, args)
5 #define CloseHandle(ph)
6 /*
7 int pthread_create(
8 //指向线程标识符的指针。
9 pthread_t *restrict tidp,
10 //设置线程属性。传入NULL表示使用默认。
11 const pthread_attr_t *restrict_attr,
12 //新线程所执行的线程函数地址。
13 void*(*start_rtn)(void*),
14 //传给线程函数的参数。
15 void *restrict arg
16 );*/
17 #else
18 //windows
19 #include <process.h>
20 #define CreateThreadEx(tid,threadFun,args) _beginthreadex(tid, 0, threadFun, args, 0, NULL)
21 /*
22 HANDLE WINAPI _beginthreadex(
23 //线程内核对象的安全属性,一般传入NULL表示使用默认设置。
24 LPSECURITY_ATTRIBUTES lpThreadAttributes,
25 //线程栈空间大小。传入0表示使用默认大小(1MB)。
26 SIZE_T dwStackSize,
27 //新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
28 LPTHREAD_START_ROUTINE lpStartAddress,
29 //传给线程函数的参数。
30 LPVOID lpParameter,
31 //指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。
32 DWORD dwCreationFlags,
33 //返回线程的ID号,传入NULL表示不需要返回该线程ID号。
34 LPDWORD lpThreadId
35 );*/
36 #endif
一般使用方式: CreateThreadEx(NULL,threadFun,arg);
但是 Linux下,第一个参数不能为空,不然直接段错误! |
|
|