0

現在のコードが正しいかどうかを知りたいので、答えが見つからない質問があります。コードは以下です。

質問はwhileループについてです..これは正しいですか?

PS: プラチナ 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;

}
4

1 に答える 1

1

それは正しくありません。while ループが必要な場合、それは Start() が非ブロッキングであることを意味します。この場合、バックグラウンド スレッドである必要はありません。メインスレッドで runloop を実行し、そこから開始する必要があります。

于 2011-03-08T18:49:08.490 に答える