id_generator.cpp

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 62 行

CPP
62
字号
// $Id: ID_Generator.cpp 13684 1998-07-31 23:36:48Z gonzo $#if !defined (ACE_ID_GENERATOR_C)#define ACE_ID_GENERATOR_C#include "ace/Object_Manager.h"#include "ID_Generator.h"ACE_RCSID(Caching, ID_Generator, "$Id: ID_Generator.cpp 13684 1998-07-31 23:36:48Z gonzo $")time_t ACE_ID_Generator::last_time_ = 0;size_t ACE_ID_Generator::last_number_ = 0;ACE_SYNCH_MUTEX *ACE_ID_Generator::lock_ = 0;char *ACE_ID_Generator::get_new_id (char *id){  time_t t;  size_t sn;  ACE_ID_Generator::get_serial_id (t, sn);  ACE_NEW_RETURN (id, char [ACE_OFFER_ID_LENGTH], 0);    ACE_OS::sprintf (id, "%014d%06d", t, sn);  return id;}voidACE_ID_Generator::get_serial_id (time_t &t, size_t &s){  ACE_MT (ACE_GUARD (ACE_SYNCH_MUTEX, ace_mon, *ACE_ID_Generator::get_lock ()));  ACE_OS::time (&t);  if (t != ACE_ID_Generator::last_time_)    {      ACE_ID_Generator::last_time_ = t;      s = ACE_ID_Generator::last_number_ = 0;    }  else      s = ACE_ID_Generator::last_number_++;}ACE_SYNCH_MUTEX *ACE_ID_Generator::get_lock (void){#if defined (ACE_HAS_THREADS)  if (ACE_ID_Generator::lock_ == 0)    {      ACE_MT (ACE_GUARD_RETURN (ACE_Recursive_Thread_Mutex, ace_mon, *ACE_Static_Object_Lock::instance (), 0));      // Double-checked Locking Optimization.      if (ACE_ID_Generator::lock_ == 0)	ACE_NEW_RETURN (ACE_ID_Generator::lock_, ACE_SYNCH_MUTEX, 0);    }#endif /* ACE_HAS_THREADS */  return ACE_ID_Generator::lock_;}#endif /* ACE_ID_GENERATOR_C */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?