我想知道如何创建 CSP obj-c 库,工作方式类似于 Go的 channel /goroutines 但具有惯用的 obj-c(并且比实际方式更少的样板)。
在其他具有原生协程和/或生成器的语言中,可以轻松地对其进行建模,但我不明白如何使用 obj-c 中的几种并发编程方式来做到这一点(另外,这个想法是“便宜的”线程)。
关于我需要做什么的任何提示?
最佳答案
我会看一下 State Threads library,因为它实现了与 Go 的 goroutine 切换算法基本相同的想法:一个 goroutine 在系统调用中即将休眠时将控制权交给调度程序,因此 ST 库包装了操作系统级别文件描述符以提供它们自己的类似 FD 的对象,这些对象可以被读取(和/或写入),而不是阻塞整个过程,这些操作将控制转移到库管理的其他轻量级线程。
那么您可能需要一个比 ST 库更高级的调度程序来让 OS 线程忙于运行您的 SP。 here 是 Go 1.2 调度程序的简单介绍,它包含指向更核心设计文档的链接。其余部分在 Go 的源代码中。
另请参阅 this answer on SO。
关于objective-c - 如何使用 objective-c 实现 go 样式 channel (CSP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18685776/