读书人

关于怎么使用好线程的有关问题

发布时间: 2012-02-16 21:30:36 作者: rapoo

关于如何使用好线程的问题
我打算在程序运行时同时运行一个辅助线程,用来处理主线程发给它的各种任务.在程序启动时我就同时构造了这个辅助线程,请问这个线程构造好后如何等待主线程发给它的任务呢?我在辅助线程里加了一个style属性用来记录任务类型,一个executed属性用来判断该任务是否被执行过。也就是说有任务的话,主线程就把这个属性设置能false,辅助线程就不停的判断executed是否为false,如果是,就执行线程execute,如果不是就继续挂起。如何才能让线程在不消耗太多资源的情况下不停的判断呢?我在execute过程里用while true do,虽然实现了但是我担心这样很消耗资源?是否有什么现成的属性设置呢?初学线程,请大家指教。

[解决办法]
建议等主进程有任务时再创建线程来处理它。
[解决办法]
while not terminated do
begin
Suspend;
if Terminated then Exit;
DoAction;
end;
[解决办法]
主要线发送任务就写上
var
newWorker: TWorker;
begin
...
newWorker := new TWorker;
newWorker.* := *;//配置任务内容
thread.Worker := newWorker;//这里需要先判断线程前一任务是否已经完成
thread.Resume;
..
end;
[解决办法]
用信号量来实现,参考以下命令

var
Hand:THandle;


Hand:=CreateEvent(nil,True,False,nil);

SetEvent(Hand);

WaitForSingleObject(Hand,1000);

CloseHandle(Hand);

读书人网 >.NET

热点推荐