CASSANDRA-5062ã§CAS (Compare and Swap) ãå ¥ãããã¨ãã話ã«ãªã£ã¦ããããããä¸ä½ã©ããªãããã¢ãããã¯ããã¼ããã£ã¹ãã使ãã®ãæ°ã«ãªã£ã¦ãããã©ããããã¨ãªã®ã ããã¨ã¹ã¬ãããããã¡èªã¿ãã¦ã¿ãã®ã ãâ¦è°è«ã®æµãã¨ãã¦ã¯ ã«ã¦ã³ã¿ã¼ã ããããªãã¦CASã»ããããAPIã¨ã㦠ZooKeeperã®ããã¯ä½¿ãã®ãã·ã³ãã«ã§ãããããï¼ ãããããµã¼ãã¼ã®ç¨®é¡å¢ããã¨ãããå¾ãªãã åºæ¬æ¹éã¯ãã³ã¼ãã£ãã¼ã¿ã¼ã¿ãããªã®ãã¬ããªã«ã»ããæ¯ã«æ±ºãã¦ãããã Chain Replication ã½ã ã³ã¼ãã£ãã¼ã¿ã¼ã©ããã£ã¦æ±ºãã ãã£ã±Paxosãããï¼ åå®è£ ã¤ããZAB使ãããZKã®å®è£ ããã ï¼ãªãããããã³ã«ä¸ã®çç±ããã£ã¦ï¼ãã£ã±Paxoså®è£ ãããããªãã⦠ã¨ãªã£ã¦ãçµå± Jonathan Ellis ã Paxos ãç´ ã§å®è£ ãã¦ãã¾ã£ã模
ããããã«ãã¹ã¬ãã飽ãã¦ããã»ã»ã»ã» æ°ãåãç´ãã¦ãååã話ããLOCK FREEã®æ¦å¿µã使ã£ã¦ ã¹ã¿ãã¯ãä½ãç´ãã¦ã¿ã¾ãããã åºæ¬çãªå 容ã¯å¤ããã¾ããã æ§é ä½ãã¾ãã£ããåãã§ãã template <class T> class lock_free_stack : protected boost::noncopyable { protected: struct snode_type{ T* value; snode_type* next; snode_type(T* nin_value,snode_type* nin_next) : value( nin_value ) , next( nin_next ) {} }; snode_type* tail; snode_type* dummy; unsigned int counter; public: //constract
Lock-freeã¨Wait-freeã¢ã«ã´ãªãºã ã¨ã¯ãå ±æãã¼ã¿ã«ããã¯ãããã¦ã¢ã¯ã»ã¹ãé²ãã¢ã«ã´ãªãºã ã¨ã¯éããè¤æ°ã®ã¹ã¬ãããåæ並è¡çã«ããã対象ãã¼ã¿ãå£ããã¨ãªãã«èªã¿æ¸ããããã¨ãå¯è½ã«ããã¢ã«ã´ãªãºã ã§ãããLock-free ã¨ã¯ã¹ã¬ãããããã¯ããªããã¨ãæå³ãã¦ãããå ¨ã¦ã®ã¹ãããã«ããã¦ã·ã¹ãã ãå¿ ãé²è¡ãããããã¯Lock-free ã§ã¯ãã¥ã¼ããã¯ã¹ãã»ããã©ã¨ãã£ããæä»å¶å¾¡ã®ããã®ããªããã£ãã使ã£ã¦ã¯ãªããªããã¨ãæå³ããããªããªãããã¯ãæã£ã¦ããã¹ã¬ããã®å®è¡ãä¸æããå ´åãå ¨ä½ã®é²è¡ãé»æ¢ãããããã§ãããWait-free ã¨ã¯ãä»ã®ã¹ã¬ããã®åä½ã«é¢ä¿ãªããã¹ã¬ããããããªãæä½ãæéã®ã¹ãããã§æä½ãå®äºããããããã¨ãæããããã¢ã«ã´ãªãºã ãLock-freeã§ãããWait-freeã§ãªããã¨ã¯ãããããWait-free ãªã¢ã«ã´ãªãºã
ã³ã³ãã¢ã»ã¢ã³ãã»ã¹ã¯ããï¼Compare-and-SwapãCASï¼ã¯ãCPUã®ç¹å¥ãªå½ä»¤ã®ä¸ç¨®ãä¸å¯åæä½ã¨ãã¦ãããã¡ã¢ãªä½ç½®ã®å 容ã¨æå®ãããå¤ãæ¯è¼ããçãããã°ãã®ã¡ã¢ãªä½ç½®ã«å¥ã®æå®ãããå¤ãæ ¼ç´ããããã®æä½ã®çµæãç½®æãè¡ããããã©ããã示ãå¿ è¦ããããåç´ãªççå¤ãè¿ããããã®ã¡ã¢ãªä½ç½®ããèªã¿è¾¼ãã å 容ï¼æ¸ãè¾¼ãã å 容ã§ã¯ãªãï¼ãè¿ãã CASå½ä»¤ã¯ããã«ãããã»ããµã·ã¹ãã ã§ã»ããã©ãªã©ãå®è£ ããã®ã«ä½¿ãããããã«ãããã»ããµã·ã¹ãã ã§Lock-freeã¨Wait-freeã¢ã«ã´ãªãºã ãå®è£ ããã®ã«ã使ãããã Maurice Herlihy (1993å¹´) ã¯ãCASå½ä»¤ãåãªããªã¼ããã©ã¤ãããã¹ãã»ã¢ã³ãã»ã»ããã§ã¯å®è£ ã§ããªããã¨ã示ãã[1]ã CASå½ä»¤ãå©ç¨ããã¢ã«ã´ãªãºã ã¯ãä¸è¬ã«ãããã¼ã¨ãªãã¡ã¢ãªä½ç½®ãèªã¿åãããã®å¤ãå¤ãè¨æ¶ãã¦ããããã®å¤ã
ã©ã³ãã³ã°
ãç¥ãã
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}