小编hur*_*ron的帖子

Erlang Actors,Scala Actors和理论概念"Actor"之间有什么区别?

据我所知,Actor模型是一种关于并发的理论.Erlang和Scala都实现了这个理论模型,但它们的实现都没有完全符合Actor模型.

从计算机科学家的角度来看,Erlang,Scala中的"Actor"概念和理论模型之间有什么区别?

erlang scala actor akka

11
推荐指数
1
解决办法
769
查看次数

在Go中,变量何时变得无法访问?

Go 1.7 beta 1今天早上发布,这是Go 1.7的发行说明草案.KeepAlive包中添加了一个新功能runtime.该文件runtime.KeepAlive给出了一个例子:

type File struct { d int }
d, err := syscall.Open("/file/path", syscall.O_RDONLY, 0)
// ... do something if err != nil ...
p := &FILE{d}
runtime.SetFinalizer(p, func(p *File) { syscall.Close(p.d) })
var buf [10]byte
n, err := syscall.Read(p.d, buf[:])
// Ensure p is not finalized until Read returns.
runtime.KeepAlive(p)
// No more uses of p after this point.
Run Code Online (Sandbox Code Playgroud)

该文件runtime.SetFinalizer还给出了一个解释runtime.KeepAlive:

例如,如果p指向包含文件描述符d的结构,并且p具有关闭该文件描述符的终结器,并且如果函数中最后一次使用p是对syscall.Write的调用(pd,buf,size ),一旦程序进入syscall.Write,则p可能无法访问.终结器可能会在那一刻运行,关闭pd,导致syscall.Write失败,因为它正在写入一个已关闭的文件描述符(或者更糟糕的是,由一个不同的goroutine打开的完全不同的文件描述符).要避免此问题,请在调用syscall.Write之后调用runtime.KeepAlive(p).

令我感到困惑的是,变量 …

garbage-collection go

7
推荐指数
1
解决办法
651
查看次数

argparse:如何使互斥参数可选?

我想像这样使用我的脚本:

python test.py run
python test.py stop
Run Code Online (Sandbox Code Playgroud)

我的代码是这样的:

parser = argparse.ArgumentParser()
command_group = parser.add_mutually_exclusive_group(required=True)
command_group.add_argument('run', help='run it', action='store_true')
command_group.add_argument('stop', help='stop it', action='store_true')
Run Code Online (Sandbox Code Playgroud)

当我执行它时,会引发异常:

ValueError: mutually exclusive arguments must be optional
Run Code Online (Sandbox Code Playgroud)

所以required=False当我添加每个参数时我尝试添加.然后我得到另一个例外:

TypeError: 'required' is an invalid argument for positionals
Run Code Online (Sandbox Code Playgroud)

我糊涂了.

python python-2.7

7
推荐指数
2
解决办法
3319
查看次数

在哪里可以获得 Erlang BEAM VM 的最新规范?

我想阅读 BEAM VM 的指令集并了解其内部结构,但我在 google 上能找到的都已经过时了。

erlang functional-programming virtual-machine elixir

4
推荐指数
1
解决办法
795
查看次数

如何在Rust中设置套接字选项SO_REUSEPORT?

我读过的文档std::net和MIO,我已经找到了一些方法,如set_nodelayset_keepalive,但我还没有找到一种方法来设置像其他套接字选项SO_REUSEPORTSO_REUSEADDR一个给定的插座上.我怎样才能做到这一点?

linux network-programming tcp rust server

3
推荐指数
1
解决办法
1494
查看次数