C++多线程怎么实现
2016-12-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
C++多线程也可以使用UNIX C的库函数,pthread_mutex_t,pthread_create,pthread_cond_t,pthread_detach,pthread_mutex_lock/unlock,等等。在使用多线程的时候,你需要先创建线程,使用pthread_create,你可以使主线程等待子线程使用pthread_join,也可以使线程分离,使用pthread_detach。线程使用中最大的问题就是同步问题,一般使用生产着消费者模型进行处理,使用条件变量pthread_cond_t,pthread_mutex,pthread_cond_wait来实现。别人说再多也是别人的,自己看书或者Google去吧。
展开全部
1.如
john737所说,linux用pthread多线程没有比进程fork和exec方式有优势。
想知道头文件用MAN手册例如:
$:man
fork
2.线程和进程都是平台相关的,如果想要代码可移植用宏定义方式解决:
#ifdef
WIN32
#define
MyThreadBegin
afxBeginThread
#else
#define
MyThreadBegin
pthread_create
#endif
这种代码只是理论上的,因为参数其实都不一样。
不建议作任何尝试编写平台可移植的多线程代码。以你现在的水平没有任何意义。这类代码你可以参见一些开元库。一般的做法是编写独立模块,然后用配置文件在MAke的时候就去确定平台了,功能代码中一般调用自己的线程启动接口。
另外如果你想学习pthread我这里倒是有一份专门讲这个得文档,在我CSDN空间。
3.问题2,得答案
如_冬晨
所说。你问题概念中C++其实是MFC和C#。并不是C++语言
4.个人觉得你的问题没有必要用线程池的思想,做一个后台守护进程,然后循环看文件,每当有新文件出现就将该文件标记为已经处理,然后fork一个新的进程处理就好了。应该没啥难度的。不必要非用线程的,Linux内核中线程和进程的实现没什么太大区别。
john737所说,linux用pthread多线程没有比进程fork和exec方式有优势。
想知道头文件用MAN手册例如:
$:man
fork
2.线程和进程都是平台相关的,如果想要代码可移植用宏定义方式解决:
#ifdef
WIN32
#define
MyThreadBegin
afxBeginThread
#else
#define
MyThreadBegin
pthread_create
#endif
这种代码只是理论上的,因为参数其实都不一样。
不建议作任何尝试编写平台可移植的多线程代码。以你现在的水平没有任何意义。这类代码你可以参见一些开元库。一般的做法是编写独立模块,然后用配置文件在MAke的时候就去确定平台了,功能代码中一般调用自己的线程启动接口。
另外如果你想学习pthread我这里倒是有一份专门讲这个得文档,在我CSDN空间。
3.问题2,得答案
如_冬晨
所说。你问题概念中C++其实是MFC和C#。并不是C++语言
4.个人觉得你的问题没有必要用线程池的思想,做一个后台守护进程,然后循环看文件,每当有新文件出现就将该文件标记为已经处理,然后fork一个新的进程处理就好了。应该没啥难度的。不必要非用线程的,Linux内核中线程和进程的实现没什么太大区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询