Đây là mã:Đọc/dev/urandom thread-safe?
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();
}
Nếu không, làm thế nào để làm cho nó thread-an toàn không?
Rõ ràng nó phải an toàn, vì lợi ích của sự tỉnh táo, nhưng tôi không thể tìm thấy bất cứ điều gì trong con người 4 ngẫu nhiên mà chỉ định rằng nó được. Ví dụ, nếu urandom đã giảm trở lại chế độ PRNG, có thể hai người gọi đồng thời bao giờ thấy cùng một đầu ra khác với cơ hội không? Chắc chắn là không, nhưng các tài liệu nói không? –
"Thấy cùng một đầu ra" là một trường hợp đặc biệt của "ngẫu nhiên". :-) –
@SteveJessop: Tài liệu không cần phải nói rằng giao diện hoạt động. Ngoài ra, urandom chỉ có một chế độ. –