当前位置:  开发笔记 > 程序员 > 正文

读/ dev/urandom线程安全吗?

如何解决《读/dev/urandom线程安全吗?》经验,为你挑选了1个好方法。

这是代码:

  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();
  }

如果没有,我如何使其线程安全?



1> Chris Jester..:

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

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

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有