我用socket通信,把接收的数据保存在文件中。由于接收的数据很大,大概有4个G左右,想提高速度,于是创建一个线程用于写文件,主线程接收网络上的数据。
首先申请一个数组,比如64M,判断一下当收到的数据有32M的时候,就创建写文件的线程
  SaveFile:=TFileThread.Creat(Buf,Lenth);
Buf用于传递数组中的数据,Lenth是数据长度。然后数组再从Socket接收数据,再写文件,如此循环。
我的本意是,用TFileThreaad这个线程写文件的同时,也在接收数据。但每当写完第一个32M,在写下一个32M的时候就会出错,大概是指针指飞了,我判断是当我再次写文件的时候,又一次创建的上文的线程,而它还没有执行完毕,或者说还没有释放栈空间。
但是我又不知道如何来判断这个线程是否结束,我做了一个标志,但是每次标志的值已经改变了,可是线程确还没有销毁。
请问该如何解决。