objective-c - 如何使用 objective-c 实现 go 样式 channel (CSP)?

标签 objective-c concurrency go yield channel

我想知道如何创建 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/

相关文章:

iphone - 我可以访问 iPhone 上的钥匙串(keychain)吗?

objective-c - 按字符串中包含的数字对 NSString 的 NSArray 进行排序。重新排列字符串,使数字位于开头?

C# 通过引用互斥

concurrency - GPars 锁返回 null

ios - CoreSpotlight 缩略图图像未显示在 Spotlight 搜索中

objective-c - 我收到一条错误消息,内容为 "Use of Undeclared Identifier ' 事件'”

java - 如果没有可用的许可,Semaphor.drainPermits 会做什么?

javascript - json:无法将字符串解码为 main.test_struct 类型的 Go 值

Go可变函数参数传递

arrays - 在 go 中解码 xml 时省略空数组元素