示例#1
0
static unsigned long SeedRandom (void) {
  unsigned long seed;

#ifdef TRI_HAVE_GETTIMEOFDAY
  struct timeval tv;

  /* ignore result */ gettimeofday(&tv, 0);

  seed = (unsigned long)(tv.tv_sec);
  seed ^= (unsigned long)(tv.tv_usec);
#else
  seed = (unsigned long) time(0);
#endif

  seed ^= (unsigned long)(TRI_CurrentProcessId() << 8);
  seed ^= (unsigned long)(TRI_CurrentProcessId() << 16);
  seed ^= (unsigned long)(TRI_CurrentProcessId() << 24);
  seed ^= (unsigned long)(TRI_CurrentThreadId());

  return seed;
}
示例#2
0
static unsigned long SeedRandom (void) {
  unsigned long seed;

#ifdef TRI_HAVE_GETTIMEOFDAY
  struct timeval tv;
  int result;
#endif


  seed = (unsigned long) time(0);

#ifdef TRI_HAVE_GETTIMEOFDAY
  result = gettimeofday(&tv, 0);

  seed ^= (unsigned long)(tv.tv_sec);
  seed ^= (unsigned long)(tv.tv_usec);
  seed ^= (unsigned long)(result);
#endif

  seed ^= (unsigned long)(TRI_CurrentProcessId());
  seed ^= (unsigned long)(TRI_CurrentThreadId());

  return seed;
}