斯卡拉通过示例:斯卡拉spawn函数2.11.7
问题描述:
我试图实现部分17.9斯卡拉的工人通过示例书与斯卡拉版本2.11.7。 import语句:斯卡拉通过示例:斯卡拉spawn函数2.11.7
import scala.concurrent._, scala.concurrent.ops._
是错误 “OPS不就是scala.concurrent的成员”。我做了谷歌和知道concurrent.ops已被弃用,而是通过未来,改变import语句:
import scala.concurrent._, scala.concurrent.Future._
全班来源:符合
import scala.concurrent._
import scala.concurrent.Future._
class ComputeServer(n: Int) {
private abstract class Job {
type T
def task: T
def res(x: T)
}
private val openJobs = new Channel[Job]()
private def processor(i: Int) {
while(true) {
val job = openJobs.read
job.res(job.task)
}
}
def future[A](p: => A):() => A = {
val reply = new SyncVar[A]()
openJobs.write{
new Job{
type T = A
def task = p
def res(x: A) = reply.put(x)
}
}
() => reply.get
}
spawn(replicate(0, n){processor})
}
但出现错误:spawn(replicate(0, n){processor})
not found: value spawn
not found: value replicate
missing arguments for method processor in class ComputeServer; follow this method with `_' if you want to treat it as a partially applied function
版本2.11.7中的生成,复制,处理函数是什么?
答
一个可以这样创建方法菌种:
def spawn(p: => Unit) {
val t = new Thread() { override def run() = p }
t.start()
}
菌种用于创建与内部给出的代码的线程。你可以使用Future {.... // code}。我不知道复制品,但您可以在这里找到来源http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_7_2_final/src/library/scala/concurrent/ops.scala?view=markup这个api在这里真的很老 –
我发现复制功能属于你的url中的ops对象。 – code4f
当然你发现它,这就是为什么我给你的网址...但它是过时的来源 –