- 论坛徽章:
- 0
|
1.boost::thread 库中是否可以产生带有参数的线程,比如现有一个函数:string func(string s),我该如何生成多个线程?且每个线程传入的参数不一样.
2.我用多个线程调用同一个函数,但我想每次调用的函数实现的功能都不一样?比如,线程1和线程2,分别读数据库中的第一条和第二条记录? 我原来想的是在该函数中放一个全局变量,但不知道该如何实现互斥.其代码如下:
#include <iostream>
#include <boost/thread/thread.hpp>
using namespace std;
static int RECNUM=0;//全局变量
void foo()
{
++RECNUM;
cout << RECNUM<<"换行"<<endl;
}
main函数如下:
int main()
{
cout << "start output:"<<endl;
boost::thread thrd1(foo);
boost::thread thrd2(foo);
boost::thread thrd3(foo);
boost::thread thrd4(foo);
boost::thread thrd5(foo);
thrd1.join();
thrd2.join();
thrd3.join();
thrd4.join();
thrd5.join();
cout << "finish!"<<endl;
return 0;
}
这个程序的输出是:
start output:
1换行2345换行换行换行换行
finish!
请按任意键继续. . .
请问我该样做才能让程序输出:
start output:
1换行
2换行
3换行
4换行
5换行
finish
期待你的帮助,不胜感激!!!!!
[ 本帖最后由 oitry_chen 于 2008-8-16 02:38 编辑 ] |
|