0

私は SOAP クライアントを作成していますが、時間ベースの優先度の高い操作を行う必要があります。たとえば、200 ミリ秒ごとに呼び出し x を処理し、2 秒ごとに呼び出し y を処理し、偶然呼び出し z を処理する必要があります。最大の優先度を持っています...しかし、別の問題があります.1秒あたりn回の呼び出ししかできず、他の呼び出しをキューに入れます..

SOAP を消費するすべてのプロセス、ユーザー インターフェイスを書きましたが、ディスパッチャーに問題があります。このためのマルチスレッド環境?

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 に答える