gpt4 book ai didi

ios - "Throttle"使用 Grand Central Dispatch 的指令队列

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:10 25 4
gpt4 key购买 nike

我 99% 确定 GCD 可以实现这样的事情,但我对 GCD 不太熟悉,我也不确定如何正确地提出这个问题,所以这里是:

我正在尝试创建一个 FIFO 指令队列,一次执行一条指令,每条指令的执行之间有 X 的延迟。这些指令也需要在主线程上执行。我假设我需要创建一个串行队列和 dispatch_async 每个指令都带有 dispatch_get_main_queue(),但我不确定如何合并延迟。

谢谢!

最佳答案

您几乎肯定不想使用 dispatch_get_main_queue()。您应该根据自己的需要创建自己的串行队列,而不是使用主队列:

dispatch_queue_t my_queue = dispatch_queue_create("com.mycompany.myapp.description", DISPATCH_QUEUE_SERIAL);

鉴于您正在从 FIFO 中读取指令,我建议您使用类似以下内容的调度 I/O:

int fd = open(...);

dispatch_io_handler_t stream_handler = ^(bool done, dispatch_data_t data, int error) {
...
}

void (^stream_cleanup_handler)(int error) = ^(int error) {
close(fd);
};

dispatch_io_t stream = dispatch_io_create(DISPATCH_IO_STREAM, fd, my_queue, stream_cleanup_handler);

dispatch_io_read(stream, 0, SIZE_MAX, my_queue, stream_handler);

关于ios - "Throttle"使用 Grand Central Dispatch 的指令队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33908138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com