支持HW团队,就支付宝领取下面的红包吧!(2018年3月31前,就几毛,也会几块,可以和其他红包叠加使用),你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

小伙伴们,给大家发红包喽!人人可领,领完就能用。祝大家领取的红包金额大大大!#吱口令#长按复制此消息,打开支付宝就能领取!er1OEj73Uj

登入 注册 | 验证
| 搜索
HelloWorld论坛 : > 计算机科学、技术、教学> 编程专题> 开源免费项目> [转]常用ACE类
 
 
 
 
类别:ACE 阅读:3465 评论:0 时间:六月 13, 2013, 5:01 p.m. 关键字:ACE

 

ACE_OS::strcasecmp 大小写比较
ACE_OS::strncasecmp n个字符大小写比较
ACE::execname (prog1); 执行prog1程序
ACE_OS_String::strdup 字符串深拷贝
ACE_OS::uname (&uname); 获取操作系统信息
ACE_Copy_Disabled 非拷贝基础类

ACE_DLL 动态库类
ACE_Process_Options
ACE_Env_Value 环境变量类
ACE_Obstack_T

ACE_Ptr 指针类
ACE_Refcounted_Auto_Ptr 指针引用计数与auto_ptr相同
ACE_Refcounted_Auto_Ptr_Rep
ACE_Auto_Basic_Ptr

ACE_Vector 提供了STL相似的vector

ACE_ARGV main参数处理类
ACE_ARGV cl (argv);

// My own stuff.
ACE_ARGV my;

// Add to my stuff.
my.add (ACE_TEXT ("-ORBEndpoint iiop://localhost:12345"));

// Print the contents of the combined <ACE_ARGV>.
for (int i = 0; i < a.argc (); i++)
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT (" (%d) %s\n"),
i,
a.argv ()[i]));

ACE_Arg_Shifter 参数构造转换类

const int test_argc_size = 5;
int argl (test_argc_size);
const ACE_TCHAR *args[test_argc_size] = {
ACE_TEXT ("-known"),
ACE_TEXT ("-huh"),
ACE_TEXT ("-arg"),
ACE_TEXT ("-what"),
ACE_TEXT ("arg")
};

ACE_Arg_Shifter shifter (argl, args);

if (!shifter.is_anything_left ())
ACE_ERROR ((LM_ERROR, "is_anything_left() returned 0 at start.\n"));

static void consume_arg (int &argc, ACE_TCHAR *argv[])
{
ACE_Arg_Shifter arg_shifter (argc, argv);
if (arg_shifter.is_anything_left ())
arg_shifter.consume_arg (1);
// Once we initialize an arg_shifter, we must iterate through it all!
while ((arg_shifter.is_anything_left ()))
arg_shifter.ignore_arg (1);
}


ACE_Get_Opt 参数选项处理类
static void
parse_args (int argc, ACE_TCHAR *argv[])
{
ACE_Get_Opt get_opt (argc, argv, ACE_TEXT ("w:n:"));

int c;

while ((c = get_opt ()) != -1)
switch (c)
{
case 'w':
n_workers = ACE_OS::atoi (get_opt.opt_arg ());
break;
case 'n':
n_iterations = ACE_OS::atoi (get_opt.opt_arg ());
break;
default:
print_usage_and_die ();
break;
}
}

ACE_Atomic_Op 原子操作类
ACE_Atomic_Op <ACE_Thread_Mutex, long> foo (5);
long result = ++foo;
result = --foo;

ACE_Auto_IncDec 自动增加计数器

ACE_Adaptive_Lock 提供统一的锁API


ACE_SString 提供了简单的字串操作
ACE_WString 宽字符类
ACE_TString 字符类的typedef

char operator []
char &operator []
ACE_SString substring
ACE_SString substr
u_long hash
size_t length
void rep (char *s) 替换类中的指针
int strstr

ACE_Auto_String_Free 简单的字符串指针释放类
get 获取类中的指针
release 释放指针内存
reset 将类中的指针置0

ACE_Tokenizer 字串分割类

char buf[30];
ACE_OS::strcpy(buf, "William/Joseph/Hagins");

ACE_Tokenizer tok (buf);
tok.delimiter ('/');
for (char *p = tok.next (); p; p = tok.next ())
cout << p << endl;

输出
William/Joseph/Hagins
Joseph/Hagins
Hagins

UUID_Generator 唯一标识产生器,象COM的UUID
UUID* generateUUID()


ACE_Time_Value 定时器使用方法
ACE_Time_Value wait (0,
iterations * 1000 * 100); // Wait 'iter' msec
ACE_Time_Value tv = ACE_OS::gettimeofday () + wait;
ACE_Time_Value diff = ACE_OS::gettimeofday ();
diff = diff - tv; // tv should have been reset to time acquired
long diff_msec = diff.msec ();

// Wait a little longer each time
static long wait_secs = 3;
ACE_Time_Value wait = ACE_OS::gettimeofday ();
ACE_Time_Value begin = wait;
wait.sec (wait.sec () + wait_secs);


ACE_Auto_Event 象WIN32的事件类
ACE_Event
static void *
worker (void *)
{
for (int iterations = 1;
iterations <= n_iterations;
iterations++)
{
ACE_Time_Value wait (0,
iterations * 1000 * 100); // Wait 'iter' msec
ACE_Time_Value tv = ACE_OS::gettimeofday () + wait;
if (evt.wait (&tv) == -1)
{
// verify that we have ETIME
ACE_ASSERT(ACE_OS::last_error() == ETIME);
++timeouts;
ACE_Time_Value diff = ACE_OS::gettimeofday ();
diff = diff - tv; // tv should have been reset to time acquired
long diff_msec = diff.msec ();

if (diff_msec > ACE_ALLOWED_SLACK)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Acquire fails time reset test\n")));
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("Diff btw now and returned time: %d ms\n"),
diff.msec ()));
test_result = 1;
}
// Hold the lock for a while.
ACE_OS::sleep (ACE_Time_Value (0,
(ACE_OS::rand () % 1000) * 1000));
evt.signal ();
}

ACE_Thread::yield ();
}

return 0;
}

ACE_Auto_IncDec

typedef ACE_Atomic_Op<ACE_Thread_Mutex, int> INTERLOCKED_INT;
static INTERLOCKED_INT current_threads_in_first_section;
static INTERLOCKED_INT current_threads_in_second_section;

static void *
worker (void *)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT (" (%t) worker starting\n")));

{ // First section.
typedef ACE_Atomic_Op<ACE_Thread_Mutex, int> INTERLOCKED_INT;
static INTERLOCKED_INT current_threads_in_first_section;
ACE_Auto_IncDec<INTERLOCKED_INT> threads_in_section_auto_inc_dec
(current_threads_in_first_section);

// Wait according to the number of threads...
ACE_Time_Value pause (current_threads_in_first_section.value (),
0);
ACE_OS::sleep (pause);
}

{ // Second section.
ACE_Auto_IncDec<INTERLOCKED_INT> threads_in_section_auto_inc_dec
(current_threads_in_second_section);

// Wait according to the number of threads inside the previous
// section...
ACE_Time_Value pause (current_threads_in_first_section.value (),
0);
ACE_OS::sleep (pause);
}

ACE_DEBUG ((LM_DEBUG,
ACE_TEXT (" (%t) worker exiting\n")));
return 0;
}

ACE_Profile_Timer 性能定时器
ACE_Profile_Timer timer;
ACE_Profile_Timer::ACE_Elapsed_Time elapsed_time;
timer.start ();
timer.stop ();
timer.elapsed_time (elapsed_time);

ACE_High_Res_Timer 高精度定时器
ACE_High_Res_Timer timer;
timer.reset ();

timer.start ();
while (i--)
{
ptr = allocator.malloc (chunk_size);
allocator.free (ptr);
}
timer.stop ();

timer.elapsed_time (tc);


ACE_Base64 Base64编码类
ACE_Date_Time 时间类
ACE_Date_Time dt;

long month = dt.month ();
long day = dt.day ();
long year = dt.year ();
long hour = dt.hour ();
long minute = dt.minute ();
long seconds = dt.second ();
long usec = dt.microsec ();


ACE_Dirent_Selector 目录处理类


ACE_Thread_Manager 线程管理器
创建线程等待结束
ACE_Thread_Manager::instance()->spawn (wait_and_kill_dialog,m_pMainWnd);
ACE_Thread_Manager::instance()->wait(); 

[挂载人]初学MPEG

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment