[笔记]linux下和windows下的 创建线程函数
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下,第一个参数不能为空,不然直接段错误!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
原文链接:https://www.cnblogs.com/lzpong/p/5667597.html
--- auth:lzpong
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!