0

我有一个基于代理的小型建模框架,我正在编写它作为项目的一部分。不同的代理都在自己的线程中运行,主管类控制它们的生命周期。所以主管类可以取消这些线程。我知道有一种isCancelled方法NSThread。使用它,是否可以接受以下成语:

#import <Foundation/Foundation.h>
#import "BugThread.h"
#import "Bug.h"

@implementation BugThread

- (id) initWithBug: (Bug*) aBug {

    if((self = [super init])) {
        [bug autorelease];
        bug = [aBug retain];
    }

    return self;
}

- (void) main {

    GSRegisterCurrentThread();

    while(![self isCancelled]) {
        //bug does its stuff
    }
}
4

1 回答 1

3

我会这么说,因为这在文档中明确说明:

如果您的线程支持取消,它应该定期调用此方法并在返回 YES 时退出。

不过,我建议您看一下NSOperationand NSOperationQueue。它们旨在在代表您管理实际线程时完全允许这种并发性。请参阅并发编程指南中的“操作队列”

于 2012-08-20T00:46:35.183 回答