C++多线程怎么实现

2025-02-22 14:54:13
推荐回答(2个)
回答1:

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去吧。

回答2:

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内核中线程和进程的实现没什么太大区别。