Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

ACEÖеÄThread MutexÔÚlinuxϵÄʹÓÃ

ACE¿âÖÐרÃŶÔÏß³Ìͬ²½ÌṩÁËÁ½¸öÀ࣬һ¸öÊÇACE_Thread_MutexÁíÒ»¸öÊÇACE_REcursive_Thread_Mutex¡£ ÔÚÎÒ¿´ À´£¬ÔÚlinuxϽøÐÐÏß³Ìͬ²½£¬²»ÒªÊ¹ÓÃACE_Thread_Mutex£¬ÓÃACE_REcursive_Thread_Mutex¾Í¿ÉÒÔÁË¡£Ô­ÒòºÜ ¼òµ¥£¬ÒòΪACE_Thread_Mutex²»Ö§³ÖÏß³ÌÖØÈë¡£Ò»µ©ÖØÈë(ͬһ¸öÏ̵߳÷ÓÃÁ½´ÎACE_Thread_Mutex::acquire£©Õâ¸öÏß ³Ì¾ÍËÀËøÁË¡£
Òª¸ãÇå³þÕâ¸öÎÊÌ⣬ÎÒÃÇÐèÒª¸ãÇå³þ²Ù×÷ϵͳÊÇÈçºÎʵÏÖÏß³ÌËøµÄ¡£WindowsϺܼòµ¥£¬ÓÃCRITICAL_SECTIONʵÏÖ¡£ CRITICAL_SECTIONÖ§³ÖÖØÈ룬ËùÒÔWindowsϵÄÏß³Ìͬ²½ÓÃACE_Thread_Mutex»òÕß ACE_REcursive_Thread_Mutex¶¼ÊÇÒ»ÑùµÄ¡£¶ølinuxϲ»Í¬£¬ÊÇÓÃposix thread ¿âʵÏֵġ£pthread µÄmutex·ÖΪÈýÖÖÀàÐÍ£¬fast,recursive,error checking,µ±Ï̵߳÷ÓÃpthread_mutex_lockʱ£¬Èç¹ûÊÇÏß³ÌÖØÈëÕâ°ÑËø£¬Ôò£º
“fast”Ëø ¹ÒÆðµ±Ç°Ïß³Ì.
“resursive”Ëø ³É¹¦²¢Á¢¿Ì·µ»Øµ±Ç°±»Ëø¶¨µÄ´ÎÊý
“error checking” ËøÁ¢¿Ì·µ»ØEDEADLK
ÏÔÈ»ACE_Thread_MutexÊÇÓÃfast·½Ê½ÊµÏֵġ£
ÎÒÓжà¸öƽ̨ (Window,AIX £¬Solaris,hp-ux,Linux)µÄC++¶àÏ̳߳ÌÐòµÄ¿ª·¢¾­Ñé,µ«ÊÇÒ»Ö±¶¼Ã»ÓÐÏëÇå³þÒ»¸ö²»¿ÉÖØÈëµÄÏß³ÌËøÓÐʲôÓã¬ÓÃÕâÑùµÄËøÓÃÆðÀ´Ì«²»·½±ã£¬ÒªºÜСÐÄÁË£¬ Ò»²»Ð¡ÐľͻáËÀËø¡£ËùÒÔÒ»°ãÇé¿ö϶¼ÐèÒªÊÖ¹¤Ð´´úÂ뽫Ëü·â×°³ÉÒ»¸ö¿ÉÒÔÖØÈëµÄËø¡£ACEÖÐÒ²ÌṩÁËÕâÑùÒ»¸ö·â×°£¬ÓÃmutexºÍcondʵÏֵ쬴úÂëÈç ÏÂ:
ACE_OS::recursive_mutex_lock (ACE_recursive_thread_mutex_t *m)
{
#if defined (ACE_HAS_THREADS)
#if defined (ACE_HAS_RECURSIVE_MUTEXES)
return ACE_OS::thread_mutex_lock (m);
#else
ACE_thread_t t_id = ACE_OS::thr_self ();
int result = 0;
// Acquire the guard.
if (ACE_OS::thread_mutex_lock (&m->nesting_mutex_) == -1)
result = -1;
else
{
// If there’s no contention, just grab the lock immediately
// (since this is the common case we’ll optimize for it).
if (m->nesting_level_ =


Ïà¹ØÎĵµ£º

ʵսLinux Bluetooth±à³Ì£¨ËÄ£© L2CAP²ã±à³Ì

£¨L2CAPЭÒé¼ò½é£¬L2CAPÔÚBlueZÖеÄʵÏÖÒÔ¼°L2CAP±à³Ì½Ó¿Ú£©
Ò»£ºL2CAPЭÒé¼ò½é£º
Logical Link Control and Adaptation Protocol(L2CAP)
Âß¼­Á¬½Ó¿ØÖƺÍÊÊÅäЭÒé (L2CAP) ΪÉϲãЭÒéÌá¹©ÃæÏòÁ¬½ÓºÍÎÞÁ¬½ÓµÄÊý¾Ý·þÎñ£¬²¢Ìṩ¶àЭÒ鹦ÄܺͷָîÖØ×é²Ù×÷¡£L2CAP ³äÐíÉϲãЭÒéºÍÓ¦ÓÃÈí¼þ´«ÊäºÍ½ÓÊÕ×î´ó³¤¶ÈΪ 64K µÄ L2CAP Ê ......

»ñÈ¡Linux 2.6.x sys_call_table


ÔÚlinuxÖÐËùÓеÄsyscall¶¼Êǵ÷ÓÃint 0x80, int 0x80µÄÖжϷþÎñ³ÌÐòΪsystem_call(arch/x86/kernel/traps_32.c:set_system_gate(SYSCALL_VECTOR,&system_call).  system_call (arch/x86/entry_32.S)×îÖÕcall *sys_call_table(,%eax,4)À´Íê³ÉÒ»¸ösyscallµ÷ÓÃ. 
¼´ int 0x80 -> system_call -> s ......

¹ØÓÚlinuxÍü¼ÇÃÜÂëµÄÒ»¸ö×î¼òµ¥µÄ·½·¨

ÍøÉÏÓкܶàµÄ·½·¨£¬¹ØÓÚÍü¼ÇlinuxµÇ¼ÃÜÂëÖ®ºóÓ¦¸ÃÔõô°ì¡£ÓÐÎåÖÖ·½·¨£¬¶¼ºÜºÃ¡£
±¾ÈËÒÔΪÓÃgrubÒýµ¼µÄÄÇÖÖ×îʵÓ㬺Ǻǣ¡ÊÔÁËһϣ¬¹ûÈ»¿ÉÒÔ£¡£¡
grubÒýµ¼

1. ÔÚ³öÏÖgrub»­ÃæÊ±£¬Ñ¡ÔñlinuxÒýµ¼ÏȻºó°´e¼ü
2. Ñ¡ÔñÒÔkernel¿ªÍ·µÄÒ»ÐУ¬ÔÙ°´e ¼ü£¬ÔÚ´ËÐеÄĩ⣬°´¿Õ¸ñ¼üºóÊäÈësingle£¬ÒԻسµ¼üÀ´Í˳ö±à¼­Ä£Ê½£» ......

ubuntu=linuxϽ¨ÉèFTP·þÎñÆ÷£¨ÍêÕû£©

linuxϹ¹½¨½¨ÉèÍêÃÀFTP·þÎñÆ÷£¬¿É¹ÜÀí£¬WEB¹ÜÀí£¬¹ÜÀí½çÃæ¡£
Ò»¡¢°²×°Ubuntu5 Desktop°æ
°²×°¹ý³Ì²»ÄÑ£¬ÒÀÕÕhttp://wiki.ubuntu.org.cn¿ìËÙÉèÖü´¿É,×¢ÒâÏÂÃæÁ½µã£º
1¡¢ÍøÍ¨Óû§ÇëÑ¡ÔñÉϺ£½»´óµÄÔ´£¬±È½Ï¿ì¡£
2¡¢ms·ÖÇøÏµÄÖÐÎÄĿ¼ÃûÏÔʾΪ£¿£¿£¿
Õâʱ£¬ÄãÒª±à¼­/etc/fstab¡£±ÈÈçÎҵıʼDZ¾ÖеÄfstabÎļþ¸ÄºóÊÇ£º
# ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ