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

linuxÄÚºË lock free


//
ͬ²½ÎÊÌ⣺
¶Ô¹²ÏíÊý¾ÝµÄ·ÃÎÊ£¬ÐèҪͬ²½£¬»¥³â¡£
ÔÚÖжϣ¬ÇÀÕ¼£¬¶àCPU£¬¶àÏß³Ì »·¾³ÏÂÓÈÆäÖØÒª¡£
ͬ²½·ÖΪ: ×èÈûͬ²½£¬·Ç×èÈûͬ²½
×èÈûͬ²½ÓÐÐí¶àʵÏÖ·½Ê½ÁË£ºmutex, semaphore. ×èÈûͬ²½Ê¹Óò»µ±¾Í¿ÉÄÜÔì³ÉËÀËø£¬»îËø£¬ÓÅÏȼ¶·´×ª¡£
·Ç×èÈûͬ²½£º£¨ÏÖÔÚÁ÷ÐÐÈýÖÖ£©
wait free ºÜÄÑʵÏÖ£¬Ë¼ÏëÊDZ¾Ïß³ÌÓÐÏÞ²½¾ÍÍê³É£¬ÍêÈ«²»ÓÃÀíÆäÓàÏ̡߳£
lock free È·±£¶à¸öÏß³ÌÖУ¬×ÜÓÐÒ»¸öÏß³ÌÊÇÔËÐÐ×ŵġ£ÔÚÈ«¾ÖÉÏ¿´¾ÍÊÇÕâ¸öÄ£¿éÒ»Ö±ÔËÐÐÖС£
obstruction free Ï̳߳ÖÐøÔËÐУ¬µ±·¢ÏÖ¹²ÏíÊý¾Ý±»¸Ä£¬»Ø¹ö¡£
²»Äѵóö Obstruction-free ÊÇ Non-blocking synchronization ÖÐÐÔÄÜ×î²îµÄ£¬¶ø Wait-free ÐÔÄÜÊÇ×îºÃµÄ£¬µ«ÊµÏÖÄѶÈÒ²ÊÇ×î´óµÄ£¬Òò´Ë Lock-free Ëã·¨¿ªÊ¼±»ÖØÊÓ£¬²¢¹ã·ºÔËÓÃÓÚµ±½ñÕýÔÚÔËÐеijÌÐòÖУ¬±ÈÈç linux Äںˡ£
linuxÄÚºËÖоÍÖ÷ÒªÊÇʵÏÖÁËlock free
Ò»°ã²ÉÓÃÔ­×Ó¼¶µÄ read-modify-write Ô­ÓïÀ´ÊµÏÖ Lock-Free Ëã·¨£¬¸ù¾Ý´ËÀíÂÛ£¬Òµ½çÔÚÔ­×Ó²Ù×÷µÄ»ù´¡ÉÏÌá³öÁËÖøÃûµÄ CAS£¨Compare - And - Swap£©²Ù×÷À´ÊµÏÖ Lock-Free Ëã·¨£¬Intel ʵÏÖÁËÒ»ÌõÀàËÆ¸Ã²Ù×÷µÄÖ¸Ácmpxchg8¡£
//Ô­Óï
CAS Ô­Ó︺Ôð½«Ä³´¦ÄÚ´æµØÖ·µÄÖµ£¨1 ¸ö×Ö½Ú£©ÓëÒ»¸öÆÚÍûÖµ½øÐбȽϣ¬Èç¹ûÏàµÈ£¬Ôò½«¸ÃÄÚ´æµØÖ·´¦µÄÖµÌæ»»ÎªÐÂÖµ£¬CAS ²Ù×÷αÂëÃèÊöÈçÏ£º
Çåµ¥ 1. CAS αÂë

 Bool CAS(T* addr, T expected, T newValue) 
 { 
      if( *addr == expected ) 
     { 
          *addr =  newValue; 
           return true; 
     } 
     else 
           return false; 
 } 
ÔÚʵ¼Ê¿ª·¢¹ý³ÌÖУ¬ÀûÓà CAS ½øÐÐͬ²½£¬´úÂëÈçÏÂËùʾ£º
Çåµ¥ 2. CAS ʵ¼Ê²Ù×÷

 do{ 
        ±¸·Ý¾ÉÊý¾Ý£»
        »ùÓÚ¾ÉÊý¾Ý¹¹ÔìÐÂÊý¾Ý£»
 }while(!CAS( ÄÚ´æµØÖ·£¬±¸·ÝµÄ¾ÉÊý¾Ý£¬ÐÂÊý¾Ý )) 
¾ÍÊÇÖ¸µ±Á½Õß½øÐбȽÏʱ£¬Èç¹ûÏàµÈ£¬ÔòÖ¤Ã÷¹²ÏíÊý¾ÝûÓб»Ð޸ģ¬Ìæ»»³ÉÐÂÖµ£¬È»ºó¼ÌÐøÍùÏÂÔËÐУ»Èç¹û²»ÏàµÈ£¬ËµÃ÷¹²ÏíÊý¾ÝÒѾ­±»Ð޸쬷ůúÒѾ­Ëù×öµÄ²Ù×÷£¬È»ºóÖØÐÂÖ´ÐиղŵIJÙ×÷¡£ÈÝÒ׿´³ö CAS ²Ù×÷ÊÇ»ùÓÚ¹²ÏíÊý¾Ý²»»á±»Ð޸ĵļÙÉ裬²ÉÓÃÁ


Ïà¹ØÎĵµ£º

java ²¶×½ÐźÅ(linuxϵÄkill,ctrl+c)

import sun.misc.Signal;
import sun.misc.SignalHandler;
/***
* javaÐźŴ¦Àídemo
* @author jiang_qh
*
*/
public class SignalHandlerExample implements SignalHandler{
private SignalHandler oldHandler;
public void handle(Signal signal) {
System.out.println("Signal handler called for signal " ......

[Ô­´´]linuxϵͳ£¬ltib¹¤¾ß¿ª·¢powerpc

¹¤×÷Ä¿±ê£º¿ª·¢°åÉϵÄÎļþϵͳͨ¹ýnfsÍøÂç¹ÒÔØ£¬µ÷ÊÔpowerpc 8315»ò5121
PC»ú»·¾³£º(1)ubuntu 8.04 linux OS  »òÕß (2)ÐéÄâ»úVMware£¨ubuntu 8.04£© + Windows XP OS
¿ª·¢°å£ºFreescaleµÄpowerpc¿ª·¢°å8315»ò5121µÈµÈ
PC»úÐèÒªµÄ´®¿Úµ÷ÊÔ¹¤¾ß:
£¨1£©ubuntu linux OS : minicom
£¨2£©Windows XP OS: ¸½¼ ......

´Ólinux¹âÅÌ×öyumÔ´

Yum£¨È«³ÆÎª Yellow dog Updater, Modified£©ÊÇÒ»¸öÔÚFedoraÖеÄshellǰ¶ËÈí¼þ°ü¹ÜÀíÆ÷¡£»ùÓÚrpm°ü¹ÜÀí£¬Äܹ»´ÓÖ¸¶¨µÄ·þÎñÆ÷×Ô¶¯ÏÂÔØRPM°ü²¢ÇÒ°²×°£¬¿ÉÒÔ×Ô¶¯´¦ÀíÒÀÀµÐÔ¹ØÏµ£¬²¢ÇÒÒ»´Î°²×°ËùÓÐÒÀÀµµÄÈíÌå°ü£¬ÎÞÐë·±ËöµØÒ»´Î´ÎÏÂÔØ¡¢°²×°¡£
ÏÂÃæ½éÉÜÒ»¸ö´Ó¹âÅÌ×öyumÔ´µÄСʵÑé
±¾ÊÔÑéʹÓÃCentOS-5.4-i386-bin,DVD.isoÈí¼þ° ......

LinuxÉÏautofsÅäÖü°Æä˵Ã÷....

             °æÈ¨ÉùÃ÷£ºÔ­´´×÷Æ·£¬ÔÊÐí×ªÔØ£¬×ªÔØÊ±ÇëÎñ±ØÒÔ³¬Á´½ÓÐÎʽ±êÃ÷ÎÄÕ ԭʼ³ö´¦ ¡¢×÷ÕßÐÅÏ¢ºÍ±¾ÉùÃ÷¡£·ñÔò½«×·¾¿·¨ÂÉÔðÈΡ£http://blog.csdn.net/Neverland2012  
         ÎÒÃǾ­³£»áÈ¥ÏÂÔØ±ð ......

Unix/Linux»·¾³³£Óÿâ¼ò½é

Ò»¸ö³ÌÐòµÄ¿ª·¢Àë²»¿ªÐí¶à¿âº¯ÊýµÄÖ§³Ö£¬¿ÉÊÇ¿âÈç´ËÖ®¶à£¬ÓпªÔ´Ãâ·ÑµÄÒ²ÓÐÊշѵġ£ºÜÏ£ÍûÊìϤ±à³ÌµÄǰ±²°Ñ×Ô¼ºµÄ¾­ÑéÕûÀíÏ£¬³£ÓõĿⶼ°üº¬ÄÄЩ¹¦ÄÜ¡£ÏÂÎÄÊÇÔÚÍøÉÏÕÒµÄÒ»¸öÀàËÆµÄ×ÊÁÏ¡£ÆÚ´ý¸ü¶à¸üÈ«µÄÄÚÈÝ¡£
---------------------------------------------------------------------------------------------------
¿´µ ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ