关于街区和大中央调度的问题

时间:2011-03-08 18:46:09

标签: objective-c macos cocoa grand-central-dispatch

我有一个问题我无法找到答案,因为我想知道我当前的代码是否正确。代码如下。

关于while循环的问题..这是正确的吗?

PS:Platinum uPnp在Start()之后需要一个while循环,否则进程会明显停止。

- (void) start {

 scan_queue = dispatch_queue_create("upnpscan.devices", NULL);

    dispatch_async(scan_queue, ^{

        PLT_CtrlPointReference ctrlPoint(new PLT_CtrlPoint());        
        BritneyMediaController controller(ctrlPoint, self);

        upnp.AddCtrlPoint(ctrlPoint);
        upnp.Start();

        [self setRunning:YES];
        while([self running]) { 

        }
        NSLog(@"Stopped running");
    });
    NSLog(@"Voor sleep");
    sleep(10);
    NSLog(@"Ik ben wakker");
    [self stop];
}

- (void) stop {

    [self setRunning:NO]; 
    return;

}

1 个答案:

答案 0 :(得分:1)

这看起来不对。如果你需要while循环,那意味着Start()是非阻塞的,在这种情况下它不需要在后台线程中。你应该在主线程上运行runloop并从那里开始,看起来像。