c++ 多线程修改文件问题

多线程读同一个文件,并改写几行后,保存为不同文件名。

void write_apdl( string out_apdl, vectorv_s, vectorv_d, vectorv_i) {

string line;
int nn = 0;
int count = 1;
ofstream apdl_out(out_apdl);

while (!message_g.In_Apdl.eof()) {
    getline(message_g.In_Apdl, line);
    if (count != v_i[nn]) {    //如果没到指定行,直接写入输出文件
        apdl_out << line << endl;

    }
    else {
        string tmp= v_s[nn] + "="+double2string(v_d[nn]);
        apdl_out << tmp << endl;
        nn++;
    }
    if (nn == v_i.size()) {
        while (getline(message_g.In_Apdl, line)) {
            apdl_out << line << endl;
        }

    }

    count++;
}


apdl_out.close();

}

目前的问题是可以生成不同 文件,但都是空的。