一个关于线程等待的问题
程序代码如下:
//strList是一个已经有字符串在内的TStringList对象
for(int i=0;i <=strList-> Count()-1;i++)
{
TNewThread newtread = TNewThread(false,strList-> String[i]);
}
TNewThread 是自己定义的一个线程类,基类为TThread。
现在的问题是,如何使得for循环中创建一个线程后并等待该线程执行完毕后,for才继续执行下一次循环,从而创建第二个线程?
[解决办法]
用WaitFor()试试
[解决办法]
按照你的题面上的意思,用WaitFor函数就可以实现了。
但你又说你不想让主线程挂起,那可以让第二个线程用WaitFor的方法等第一个线程结束,而第三个线程等第二个线程结束等等。
比如,将第一个线程的指针当作参数传给第二个线程,然后在线程的执行函数中调用传入参数线程的WaitFor函数。
[解决办法]
晕,看楼主的逻辑不是很清楚,即然你是第一个线程做完了再做第二个线程。那你为什么还要创建这么多的线程做什么呢?反正同时运行的只有一个线程。
线程创建的时候用TNewThread *newtread = TNewThread(false,strList-> String[i]);
认同itbear(Victor) 的观点。
如果你真的想自己管理这些线程,你就要将这些线程句柄存放起来,自己手动释放。