多线程写文件,在线等
HANDLE Event;
UINT aa(LPVOID pParam)
{
int i=0;
CString FileName= "I:\\1.txt ";
CFile f;
f.Open(FileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
while(i++ <100){
WaitForSingleObject(Event,INFINITE);
ResetEvent(Event);
f.Seek(f.GetLength(),CFile::begin);
f.Write( "a ",1);
SetEvent(Event);
}
f.Close();
return 0;
}
UINT bb(LPVOID pParam)
{
int j=0;
CString FileName= "I:\\1.txt ";
CFile f;
f.Open(FileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
while(j++ <100){
WaitForSingleObject(Event,INFINITE);
ResetEvent(Event);
f.Seek(f.GetLength(),CFile::begin);
f.Write( "b ",1);
SetEvent(Event);
}
f.Close();
return 0;
}
Event=CreateEvent(NULL,TRUE,FALSE,NULL);
SetEvent(Event);
AfxBeginThread(aa,this);
AfxBeginThread(bb,this);
运行完后结果是:
aaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbaaaaaaaaaaaaaaaa
我想要的是;
ababababababababa……
[解决办法]
HANDLE Eventaa;
HANDLE Eventbb;
UINT aa(LPVOID pParam)
{
int i=0;
CString FileName= "I:\\1.txt ";
CFile f;
f.Open(FileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
while(i++ <100){
WaitForSingleObject(Event,INFINITE);
ResetEvent(Eventaa);
f.Seek(f.GetLength(),CFile::begin);
f.Write( "a ",1);
SetEvent(Eventbb);
}
f.Close();
return 0;
}
UINT bb(LPVOID pParam)
{
int j=0;
CString FileName= "I:\\1.txt ";
CFile f;
f.Open(FileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary|CFile::shareDenyNone);
while(j++ <100){
WaitForSingleObject(Event,INFINITE);
ResetEvent(Eventbb);
f.Seek(f.GetLength(),CFile::begin);
f.Write( "b ",1);
SetEvent(Eventaa);
}
f.Close();
return 0;
}
Event=CreateEvent(NULL,TRUE,FALSE,NULL);
SetEvent(Event);
AfxBeginThread(aa,this);
AfxBeginThread(bb,this);