Dies ist der Code:
%pr_e%
Wenn nicht, wie mache ich es threadsicher?
Solange jede Ausführung der Funktion in einem eigenen Thread ist (dh die lokalen Variablen number
, urandom
, bytes_read
werden nicht zwischen den Threads geteilt), sehe ich keine Thread-Sicherheitsprobleme . Jeder Thread hat dann seinen eigenen Dateideskriptor in /dev/urandom
. /dev/urandom
kann gleichzeitig von mehreren Prozessen aus geöffnet werden, also ist das in Ordnung.
Übrigens kann /dev/urandom
nicht geöffnet werden und Ihr Code sollte damit umgehen. Einige Ursachen sind: keine verfügbaren Dateideskriptoren mehr; /dev
nicht richtig gemountet (obwohl Sie in diesem Fall größere Probleme haben); Ihr Programm wird in einem speziellen chroot
ausgeführt, das den Zugriff auf alle Geräte verweigert; usw.
Tags und Links c multithreading random posix