Multithreading MacOS上有线程安全的srandom()吗?
我正在编写一些代码来生成一些艺术图像。部分过程是随机的。用户可以设置随机种子以获得可重复的结果 我发现,如果我在不同线程上同时生成两个具有相同参数的图像,则不会得到相同的结果。我怀疑这是因为Multithreading MacOS上有线程安全的srandom()吗?,multithreading,macos,random,Multithreading,Macos,Random,我正在编写一些代码来生成一些艺术图像。部分过程是随机的。用户可以设置随机种子以获得可重复的结果 我发现,如果我在不同线程上同时生成两个具有相同参数的图像,则不会得到相同的结果。我怀疑这是因为srandom()/random()不是线程安全的 Linux似乎有额外的可重入的srandom\u r()和random\u r()方法。但我在MacOS上找不到 通过阅读srandom()/random()的手册页,我看到还有initstate()和setstate(),但手册页上不清楚使用它们是否能解决
srandom()
/random()
不是线程安全的
Linux似乎有额外的可重入的srandom\u r()
和random\u r()
方法。但我在MacOS上找不到
通过阅读srandom()
/random()
的手册页,我看到还有initstate()
和setstate()
,但手册页上不清楚使用它们是否能解决问题。这就是他们的目的吗
我可以使用一个,但我希望我可以使用操作系统本身的东西。这样的东西存在吗?为什么不直接使用arc4random?因为我需要能够使用用户选择的种子对其进行种子设定,这样他们就可以对相同的输入获得相同的结果。我看不到一种方法来播种
arc4random()
。有吗?啊,我错过了。嗯,至少有一个AIX手册页说不要在多线程环境中使用initstate或setstate函数。很高兴知道!谢谢你的信息!只要没有人调用lcong48()
,您就可以使用jrand48()
,但它是一个不同的(更糟糕的)生成器。