Giriş
Bu metod POSIX.1-2008 ile obsolete olmuştur ! Yeni kodlarda kullanmamak gerekir.
1. C'deki rand() metodunun tersine bu metod state verisini seed için verilen alanda saklar.
2. Normalde thread-safe değildir. Eğer her thread kendi seed bellek alanını sağlarsa bu metod thread-safe olarak kullanılabilir. Bu metod global state ile kullanılırsa thread-safe olmaz!
Örnek 1
rand() çağrısını kolayca myrand() ile değiştirmek istersek şöyle yaparız.
Şöyle yaparız.
Bu metod POSIX.1-2008 ile obsolete olmuştur ! Yeni kodlarda kullanmamak gerekir.
1. C'deki rand() metodunun tersine bu metod state verisini seed için verilen alanda saklar.
2. Normalde thread-safe değildir. Eğer her thread kendi seed bellek alanını sağlarsa bu metod thread-safe olarak kullanılabilir. Bu metod global state ile kullanılırsa thread-safe olmaz!
rand() çağrısını kolayca myrand() ile değiştirmek istersek şöyle yaparız.
int myrand()
{
  static unsigned int myseed = ... some initialization of your choice ...;
  return rand_r (&myseed);
}Şöyle yaparız.
unsigned int seed = YOUR_INITIAL_SEED;
for (int x = 0; x < 100000; x++)
{
  unsigned int r = rand_r(&seed);
  ...
} 
 
Hiç yorum yok:
Yorum Gönder