Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading MacOS上有线程安全的srandom()吗?_Multithreading_Macos_Random - Fatal编程技术网

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()
,但它是一个不同的(更糟糕的)生成器。