0

我正在制作一个肥皂客户端,我需要做一些基于时间和优先级的操作..例如..我需要每 200 毫秒处理一次呼叫 x,每 2 秒处理一次呼叫 y,以及偶然的呼叫 z,这应该具有最高优先级...但还有另一个问题,我每秒只能拨打 n 次电话,将其他电话排队..

我已经写了所有的肥皂消耗过程,用户界面,但我遇到了调度程序的问题。我试过调度队列,但我找不到对这种实时和有限处理的支持。也许我应该写一个多线程环境呢?

4

2 回答 2

1

iOS/OSX 不是实时操作系统。但是,看看 NSOperationQueue ,它应该可以让您实现大部分您正在寻找的东西,而无需自己手动创建线程:

于 2011-05-03T13:41:07.920 回答
0

使用调度源计时器。在任何情况下,都没有实时保证。

dispatch_source_t timerX = dispatch_source_create(
    DISPATCH_SOURCE_TYPE_TIMER, 0, 0,
        dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_source_t timerY = dispatch_source_create(
    DISPATCH_SOURCE_TYPE_TIMER, 0, 0,
        dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

dispatch_source_set_timer(timerX,
    dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC),
        DISPATCH_TIME_FOREVER, 0);
dispatch_source_set_timer(timerY,
    dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC),
        DISPATCH_TIME_FOREVER, 0);

dispatch_source_set_event_handler(timerX, ^{
    /* call X */
});
dispatch_source_set_event_handler(timerY, ^{
    /* call Y */
});

dispatch_resume(timerX);
dispatch_resume(timerY);
于 2011-05-06T22:35:19.407 回答