Thanks, guys. I change my code a bit. The results are right. But I suspect it never used thread, but excute the thread one by one.
new code
void mtread(char* filename,const int stidx, const int edidx,int id) {
fstream infile;
infile.open(filename);
string line;
int linenum = 0;
if (infile.good()){
while (! infile.eof()) {
boost::mutex::scoped_lock lock(io_mutex);
// infile.seekg(linenum,ios::beg);
getline(infile,line);
if (linenum>=stidx && linenum<=edidx){
cout<<id << " : " <<line<<endl;
//cout<<linenum<<endl;
linenum++;
}
else
{
linenum++;
if (linenum>edidx)
break;
}
}
}
else
{ cerr<< "file " << filename << " cannot be opened for reading" <<endl;
}
infile.close();
}
I got the same results running the program twice.
1 : 1
1 : 2
1 : 3
1 : 4
1 : 5
2 : 6
2 : 7
2 : 8
2 : 9
2 : 10
Thank for your helps.
regards,
gma