gpt4 book ai didi

c - reading/dev/urandom 线程安全吗?

转载 作者:太空狗 更新时间:2023-10-29 16:53:53 24 4
gpt4 key购买 nike

这是代码:

  unsigned int number;
FILE* urandom = fopen("/dev/urandom", "r");
if (urandom) {
size_t bytes_read = fread(&number, 1, sizeof(number), urandom);
DCHECK(bytes_read == sizeof(number));
fclose(urandom);
} else {
NOTREACHED();
}

如果不是,我如何使其成为线程安全的?

最佳答案

只要函数的每次执行都在它自己的线程中(即局部变量 numberurandombytes_read 不是在线程之间共享),我没有看到任何线程安全问题。然后每个线程将在 /dev/urandom 中拥有自己的文件描述符。 /dev/urandom 可以从多个进程同时打开,所以没关系。

顺便说一句,/dev/urandom 可能无法打开,您的代码应该处理它。一些原因是:用完可用的文件描述符; /dev 没有正确安装(尽管在这种情况下你有更大的问题);你的程序正在一个特殊的 chroot 中运行,它拒绝访问任何设备;等等

关于c - reading/dev/urandom 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/133546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com