【发布时间】:2016-12-09 18:48:57
【问题描述】:
在srand 的文档中,它说:
另一种情况是,您可能希望在“fork”之后调用“srand”,以避免子进程与父进程共享相同的种子值(因此彼此共享)。
我可以发誓我从来没有遇到过这个,所以我测试了它:
$ perl -E 'for (1 .. 8) { next if fork; say rand; exit;} wait for 1 .. 8'
0.301967407417582
0.497966311014356
0.05798998109913
0.907357103963481
0.240495550287054
0.74279685605234
0.368774714022042
0.562179033951001
然后我用srand 测试在父节点中设置种子:
$ perl -E 'srand; for (1 .. 8) { next if fork; say rand; exit;} wait for 1 .. 8'
0.13028028358622
0.13028028358622
0.13028028358622
0.13028028358622
0.13028028358622
0.13028028358622
0.13028028358622
0.13028028358622
因此,如果您在父项中设置种子,则子项都将获得相同的值。为什么在第一个示例中没有发生这种情况?
【问题讨论】: