多线程,execute 方法(50分)

  • 主题发起人 主题发起人 wkx2002
  • 开始时间 开始时间
W

wkx2002

Unregistered / Unconfirmed
GUEST, unregistred user!
我得意思是,当多线程从Execute()执行完后,线程会自动终止,还是被挂起??
还是,人工自动去终止它?
FreeOnTerminate:=True;这个干什么用?
我还想问一下,就是想我做一个服务端,一运行,就创建多个线程,一直轮循某张表,当有数据,就唤醒,没有数据就挂起.
这个机制,怎么处理.
请大家帮忙一下.
 
大家帮忙一下,我对线程,还是不太了解.
 
谢谢大家了.
 
当多线程从Execute()执行完后,线程会自动终止
FreeOnTerminate:=True;就是当线程终止时自动释放你的TThread对象
一直轮循某张表,当有数据,就唤醒,没有数据就挂起. 在Execute方法中循环就行
 
谢谢这位哥们,那我再问一下,怎么知道线程终止?
 
线程终止会触发OnTerminate事件
 
我问一下,要是,当线程执行完后,我没有释放它,这个线程还在内存中马?
线程终止,是一个什么概念.那我要是唤醒这个终止得线程,它还能执行吗?
 
FreeOnTerminate:=True;表示线已经结束。
线程有两种创建状态。线程.Create(参数) 设为True表示线程运行完后自动终止并释放掉。
设为false就表示需要手动释放。也就是说运行完后要将 FreeOnTerminate:=true;
 
Terminated判断线程是否终止,但是是否终止不能肯定,因为调用Terminate就把Terminated设置为True了
 
当线程执行完后,我没有释放它,肯定还在内存中,因为线程一般都是全局性的。因此会一直到你的程序Close;终止线程就是结束线程运行。并不一定是释放它。唤醒当然是可以继续执行的。
 
那我创建线程时候,FreeOnTerminate:=false;
我再帮助里面找了这个属性(FreeOnTerminate)得意思:
Determines whether the thread object is automatically destroyed when the thread terminates.
When FreeOnTerminate is false, the thread object must be explicitly destroyed in application code.
这句话,应该是:表示线程结束时候,要人工释放.
我想不让它结束,一直轮循.
直到,人工,把它终止掉.这样可以吗?
 
因为,我做个服务端,一直轮循某张表,有数据就唤醒,没有数据就挂起.
 
晕,楼主最好找本书看看。
另外更正一下楼上朋友的说法:
>>FreeOnTerminate:=True;表示线已经结束。
FreeOnTerminate:=True;并不是表示线程结束,而是标示线程结束时自动释放你的TThread对象。
>>线程.Create(参数) 设为True表示线程运行完后自动终止并释放掉。
设为false就表示需要手动释放。也就是说运行完后要将 FreeOnTerminate:=false
这个说法也不对,create的true参数是创建之后先挂起,false参数是线程创建之后直接运行。
 
谢谢各位哥们的建议以及回答.
那我问一下,Synchronize,这个方法,怎么理解啊,
 
是不是,只争对,主线程的的vcl控件,而言.
对于,主线程的全局变量怎么同步法?
 
是不是,我问题太多了,分数,太少啊.那我先接一下.给大家,分数.
 
多人接受答案了。
 
后退
顶部