ios - 如何填充工作线程的命令缓冲区(iOS线程)

标签 ios multithreading

我正在检查 RunLoop iOS documentation它讨论了这里说明的想法: this
(来源:apple.com)

在 RunLoopSource 中,它为客户端线程(即上图中的主线程)提供以下接口(interface),以用命令和数据填充音频缓冲区,并随后触发所述缓冲区中的所有可用命令:

// Client interface for registering commands to process
- (void)addCommand:(NSInteger)command withData:(id)data
- (void)fireAllCommandsOnRunLoop:(CFRunLoopRef)runloop 

在添加命令方法中,我们只是将命令添加到 NSMutableArray 数据结构中。

我的问题是我们如何将这些命令封装在变量中,使它们成为方法。addCommand 方法中的 data 变量的类型为 id.. 例如,我们可以在那里放一个 block 吗?这里有任何最佳实践/示例代码等吗?谢谢。

最佳答案

该技术早于区 block 。使用并发 block 的优点在于,您可以在系统中投入尽可能多的工作,并且考虑到其总设备范围,可以根据需要在多个核心和线程上安排该工作。您还可以使用并发 NSOperation 并让它实现 fifo 来接受工作并处理它,但在这种情况下,只会有辅助线程,并且它将再次按照系统认为适合的方式安排运行时间,因此与 block 相比没有优势。

关于ios - 如何填充工作线程的命令缓冲区(iOS线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12388616/

相关文章:

iOS 9 - 自定义 UITextField 使其成为标签字段 (Swift 2)

ios - scrollView ContainerView 内的 Swift 3.0 UiTableView 未调用 DidSelectRow(Twitter 配置文件)

ios - 如何在UIView中调用UITextFieldDelegate

c# - 如果 ReadWriteSlimlock 被持有,则执行其他操作

ios - 调用协议(protocol)扩展初始化器

ios - "iPhone Distribution"证书不受信任

java - 线程中的异常

python - 线程和条件 : debugging the acquirement

c++ - 使用 pthreads 作为类成员的互斥体

perl - Perl线程问题