_ ÊÂ¥«¥ó
²¿¤ä¤é¿§¡¹³Ú¤·¤«¤Ã¤¿¤â¤Î¤Î½ÉÂê¤âÁý¤¨¤ë´¶¤¸¤À¤Ã¤¿¡£
- ¥á¡¼¥ä¥¦¤¬Å¹¤ÎÊ·°Ïµ¤¤«¤ï¤Ã¤Æ¤«¤é¤ä¤Ï¤ê¤ª¤¤¤·¤¯¤Ê¤¯¤Ê¤Ã¤Æ¤ë¤è¤¦¤Ê¡Ä
- ÊÂÎó¥×¥í¥°¥é¥à¤Îºî¤êÊý¤È¤¤¤¦Ëܤ¬Îɤ¤¤é¤·¤¤
- Molatomium ¤Î¾ÜÀâ¤È¤«¤Ï¤Ê¤«¤Ã¤¿
- id:goyoki ¤µ¤ó¤Î FPGA ·Ï¤Î¡£¤ä¤Ã¤Ñ³Ú¤·¤½¤¦¤À¤è¤Ê¤¡
- recursive mutex ¤Ï¤¦¤ó¤³¤Ã¤ÆÏäϲ¿ÅÙ¤«Ê¹¤¤¤¿¤³¤È¤¬¤¢¤Ã¤¿µ¤¤¬¤·¤Æ¡¢¤¤¤¯¤Ä¤«¤¢¤Þ¤ê°Õ¼±¤·¤Ê¤¤¤è¤¦¤ÊÍýͳ¤¬¤¢¤Ã¤¿¤è¤Ê¤¡¤È»×¤Ã¤¿¤±¤É»×¤¤½Ð¤»¤Ê¤«¤Ã¤¿¡£°Õ¼±¤¹¤ë¤è¤¦¤ÊÍýͳ¤È¤·¤Æ¤Ï¤³¤³¤Î2¤ÄÌܤβòÅú¤È¤«¤¬¤¢¤Ã¤¿¤È»×¤¦¡£ http://stackoverflow.com/questions/187761/recursive-lock-mutex-vs-non-recursive-lock-mutex
- ¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤È¤«¤â¤¢¤ë¤±¤É¤½¤ì¤Ï½ÅÍפ¸¤ã¤Ê¤¤(¤È¸À¤ï¤Ê¤¤¤ÈÀâÆÀÎϤ¬Íî¤Á¤ë)
- ¤³¤ì¤òÅÓÃæ¤Þ¤ÇÆɤó¤À http://www.boostcon.com/site-media/var/sphene/sphwiki/attachment/2009/05/02/multithread.pdf
- memcached ¤Ë¤Ä¤¤¤Æ id:w_o ¤µ¤ó¤Ë¥è¥¿Ïäò¤·¤¿¤ê¡£»È¤Ã¤¿¤³¤È¤â¤Ê¤¤¤¯¤»¤Ë
- °ìÈÖÂ礤¤¤Î¤Ï memcached ¤È¤«¤¤¤¦Ïäò¤·¤Æ¤¤¤ë»þ¤Ï¡¢¤½¤â¤½¤â¥í¡¼¥«¥ë¤À¤±¤Ç²ò·è¤¹¤ëÏäò¤·¤Æ¤Ê¤¤(¤È¤¤¤¦Ç¾ÆâÀßÄê(¤³¤³¤Ç¸½¼Â¤Î¥µ¡¼¥Ó¥¹¤ÎήÎ̤ÏÌä¤ï¤Ê¤¤)¤Ë¤Ê¤Ã¤Æ¤¤¤ë)¤È¤¤¤¦¤³¤È¤«¤Ê¡¼¤È»×¤Ã¤¿
- ¤¢¤È¤Þ¤¡ 1Gbps ¤Ç¤â¥Ç¥£¥¹¥¯¤è¤ê¥Í¥Ã¥È¥ï¡¼¥¯¤ÎÊý¤¬Â®¤¤¤È¤¤¤¦´¶³Ð¤ÎÌÏÍÍ¡£ËͤÎÂδ¶¤â¤½¤¦¤À¤Ê¤¡¡£ http://highscalability.com/numbers-everyone-should-know
- shared_ptr ¤Ï¤¤¤º¤ì¤Ë¤»¤è°ìÅÙ¼ÂÁõ¤òÆɤà¤Ù¤
- mutex ºî¤Ã¤¿¥¹¥ì¥Ã¥É¤Ç¤Ï¥í¥Ã¥¯¤òÁ´¤¯¤·¤Ê¤¤¤È¤«¤¤¤¦ÏäϤ³¤ì¤Ê¤ó¤À¤±¤ÉÏÀʸ¥À¥¦¥ó¥í¡¼¥É¤Ï¶â¤«¤«¤ë¤ß¤¿¤¤¤À: http://shinh.skr.jp/m/?date=20080731#p01
- lock free ¤Ï̵Ãã¶ìÃ㤤¤¤ÏäÀ¤Ã¤¿¤È»×¤¦¡£ÃΤäƤëÏä⿤«¤Ã¤¿¤±¤É¤³¤³¤Þ¤Ç¤¤Á¤ó¤È¤Þ¤È¤Þ¤Ã¤Æ¤ï¤«¤ê¤ä¤¹¤¯½ç½ø¤À¤Æ¤Æʹ¤¤¤¿¤³¤È¤Ï´Ö°ã¤¤¤Ê¤¯Ìµ¤¤¡£Æ°²è¤È¤«¾å¤¬¤ë¤Ê¤é¤ß¤ó¤Ê¸«¤ë¤Ù¤!
- ½ª¤ï¤Ã¤Æ¤«¤é¥¹¥é¥¤¥É¤Î¥³¡¼¥É¤Ï while ¤Ç¤«¤³¤Ã¤Æ¤ë¤ó¤Ê¤é weak ¤ÎÊý¤Ç¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¤Ç¤¹¤«¤Èʹ¤¤¤¿¤é¡¢¼¡¤Î¥ª¥Ö¥¸¥§¥¯¥Èºî¤ë¥³¥¹¥È¤Ë¤è¤Ã¤Æ¤½¤ì¤¬·Ú¤¤¤ó¤Ê¤é weak ¤Ç¤¤¤¤¤±¤É¤½¤ì¾ì¹ç¤Ë¤è¤ë¤è¤Í¡¢¤È¤Î¤³¤È¡£¤Ê¤ë¤Û¤É¤½¤ê¤ã¤½¤¦¤À
- Haskell ¤Ï¤Þ¤¡¤¤¤Ä¤â¤Î¤³¤È¤À¤±¤É»È¤¤¤«¤¿¤¦¤ó¤Ì¤ó¤è¤ê¥â¥Á¥Ù¡¼¥·¥ç¥ó¤È¤É¤¦²ò·è¤·¤¿¤«¤òÌÀ³Î¤ËÃΤꤿ¤¤¤Ê¤¡¤È»×¤Ã¤¿¡£¤¤¤Ä¤âʹ¤¯Á°¤è¤êµ¿Ì䤬Áý¤¨¤ë¡£Îã:
- Haskell ¤ÏÊÂÎó¥×¥í¥°¥é¥à¤ÎÆñ¤·¤¤¤È¤³¤í¤Ï¤À¤¤¤¿¤¤¸À¸ì¤Ç±£ÊäǤ¤ë(¾Ð)
- $|| ¤È¤«¥³¡¼¥É¤¬¤è¤¯¤ï¤«¤é¤ó¤«¤Ã¤¿¡£ sieve ¤ÎÊý¤Ï¤É¤³¤ò parallel ¤Ë¤·¤Æ¤¿¤ó¤À¤í¤¦¤«¡£
- parallel ¤À¤È¤Ê¤ó¤Ç -feager-blackholing ¤¬É¬ÍפʤΡ¢¤È¤¤¤¦¤«ÉáÄ̤˹ͤ¨¤Æ¡Ö¤³¤Î¥µ¥ó¥¯¼Â¹ÔÃæ¤Ã¤¹¡ª¡×¥Õ¥é¥°¤ÏÊÂÎó¤À¤í¤¦¤È¤Ê¤«¤í¤¦¤ÈɬÍפʵ¤¤¬¤·¤Æ¤¿¤Î¤Ç¤è¡¼¤ï¤«¤é¤ó¤«¤Ã¤¿¡£
- Îã¤Ç½Ð¤µ¤ì¤Æ¤¿ quick sort ¤È¤«¤Ã¤Æ¤¿¤Ö¤ó¥¿¥¹¥¯Åª¤Ê¤Î¤ò 2N ¸Äºî¤ë¤ó¤À¤è¤Ê¡¼¤È¤«»×¤Ã¤Æ¤½¤ìÉáÄ̤ËÀµ³Ê¤Ëɾ²Á¤¹¤ë¤è¤êÃÙ¤¤¤ó¤¸¤ã¤Í¡¼¤È¤«ÁÛÁü¤·¤Æʹ¤¤¤¿¤È¤³¤í¡¢¤½¤â¤½¤â¥Ð¥°Æ§¤ó¤Ç¤ë¤«¤é¤ï¤«¤é¤ó¤È¤«¤Ê¤ó¤È¤«¡£ real world haskell ¤È¤«¸À¤¦¥ä¥Ä¤Ï¤ß¤ó¤Êº¾µ½»Õ¤Ç¤¢¤ë
- nested data parallelism ¤Ã¤Æ¤Ê¤Ë¤«¤è¤¯¤ï¤«¤é¤º
- STM ¤Ç CAS ¤Ã¤Æ¤Ê¤Ë¤«¤è¤¯¤ï¤«¤é¤º
- last core parallel slowdown / spin lock? ¤È¤«¥á¥â¤Ã¤¿¾å¤Ë¼ÁÌ䤷¤¿¤±¤É¤è¤¯¤ï¤«¤é¤º¡£¤Ê¤ó¤Ç CPU °ì¸Ä»Ä¤¹¤ÈÃÙ¤¯¤Ê¤é¤Ê¤¤¤Î¡©
- ÊÂÎó¥×¥í¥Õ¥¡¥¤¥é¤Î¥â¥Á¥Ù¡¼¥·¥ç¥ó¤¬¤ï¤«¤é¤º
- id:kazuhooku ¤µ¤ó¤ËÏäò¿§¡¹Ê¹¤±¤Æ¤è¤«¤Ã¤¿¡£ÆäˤªÊ¹¤¤·¤¿¤«¤Ã¤¿¤Î¤Ï²¼µ¤Î2ÅÀ¤Ê¤ó¤À¤±¤É¡¢Æä˶ä¤ÎÌð¤Ï¤³¤³¤Ë¤â̵¤¤¤è¤¦¤À¤Ã¤¿
- ¤Ê¤ó¤Ç¤â°ì¿Í¤Ç¾å¤«¤é²¼¤Þ¤Ç¤ä¤Ã¤Á¤ã¤¦¤Î¤Ã¤Æ¤¹¤´¤¯¤Ê¤¤¤¹¤«¢ª·Ð¸³¡£¤¢¤È IRC ¤Çʹ¤¯
- °ì¿Í¤Ç¤ä¤Ã¤Æ¤ë¤È¡Ö¤ª¤ä¤Þ¤ÎÂ羡פȤ¤¤¦¤«¡¢Á´Á³¥Ù¥¹¥È¤¸¤ã¤Ê¤¤²ò¤ËÍî¤ÁÃ夤¤Á¤ã¤¦É԰¤Ȥ«Ìµ¤¤¤¹¤«(¼ÂºÝ°ì¿Í¤¸¤ã¤Ê¤¯¤Æ¤â´ë¶È¤´¤È¤ËÌ®¡¹¤ÈÅÁ¤ï¤ë¥Ù¥¹¥È¤¸¤ã¤Ê¤¤¤±¤ÉŬÅÙ¤ËÆ°¤¯¥é¥¤¥Ö¥é¥ê¤È¤«¤½¤¦¤¤¤¦¤Î¤¢¤ë¤È»×¤¦¤ó¤À¤è¤Ê)¢ª¤¢¤ë¤«¤â¡£¤¢¤È IRC ¤Çʹ¤¯
(00:27)
ÅöÆü¤É¤¦¤¤¤¦ÏäÀ¤Ã¤¿¤«ÃΤé¤Ê¤¤¤±¤É¡Ä¡Ä
> nested data parallelism ¤Ã¤Æ¤Ê¤Ë¤«¤è¤¯¤ï¤«¤é¤º
ľÎó½èÍý¤òÊ£¿ô¤Î¥Ç¡¼¥¿¤ËÂФ·¤ÆÊÂÎó¤ËŬÍѤ¹¤ë¤Î¤¬ÉáÄ̤Πdata parallelism ¤Ç¡¢ÊÂÎó½èÍý¤òÊÂÎó¤ËŬÍѤ¹¤ë¤³¤È¤òµö¤¹¤Î¤¬ nested data parallelism ¡£
> parallel ¤À¤È¤Ê¤ó¤Ç -feager-blackholing ¤¬É¬ÍפʤΡ¢¤È¤¤¤¦¤«ÉáÄ̤˹ͤ¨¤Æ¡Ö¤³¤Î¥µ¥ó¥¯¼Â¹ÔÃæ¤Ã¤¹¡ª¡×¥Õ¥é¥°¤ÏÊÂÎó¤À¤í¤¦¤È¤Ê¤«¤í¤¦¤ÈɬÍפʵ¤¤¬¤·¤Æ¤¿¤Î¤Ç¤è¡¼¤ï¤«¤é¤ó¤«¤Ã¤¿¡£
Haskell¤ÎÂçÉôʬ¤Ç¤¢¤ëÉûºîÍѤΤʤ¤·×»»¤Ï¡¢½ÅÊ£¼Â¹Ô¤·¤Æ¤â°Ọ̃Ū¤Ë¤ÏÌäÂê¤Ê¤¤¤Î¤Ç¡¢¤½¤ì¤é¤Ë´Ø¤·¤Æ¤Ï¡Ö¤³¤Î¥µ¥ó¥¯¼Â¹ÔÃæ¤Ã¤¹¡ª¡×¥Õ¥é¥°¤Ïɬ¿Ü¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤Ç¤¹¡£
¤¿¤À¡¢½ÅÊ£¼Â¹Ô¤òËɤ¤¤À¤ê¡¢Â¾¤Ë¤â´ö¤Ä¤«Îɤ¤¤³¤È¤¬¤¢¤ë¤Î¤Ç¡¢ÊÂÎó¤Ç¤âľÎó¤Ç¤âÉáÄ̤ϥե饰¤ò»È¤¤¤Þ¤¹¤¬¡£
¤Ç¡¢Ä¾Îó¤À¤Èñ¤Ë¥Õ¥é¥°¤ò¥µ¥ó¥¯¤ËΩ¤Æ¤ì¤ÐÎɤ¤¤Î¤À¤±¤É¡¢ÊÂÎó¤Î¾ì¹ç¤Ë¤Ï¥µ¥ó¥¯¤Î¼Â¹Ô¤ò³«»Ï¤¹¤ëÅÙ¤ËÇÓ¾½èÍý¤·¤Æ¥Õ¥é¥°¤òΩ¤Æ¤Æ¤¤¤ë¤È¡¢(ÂçÎ̤˥µ¥ó¥¯¤ò¼Â¹Ô¤¹¤ëHaskell¤Ç¤Ï)Àǽ¾åÌäÂê¤Ë¤Ê¤ë¤Î¤Ç¡¢½ÅÊ£¼Â¹Ô¤ò´°Á´¤ËËɤ°¤³¤È¤ÏÄü¤á¤ÆŬÅö¤Ë¤ä¤ë¤Î¤¬ lazy black-holing ¤ä eager black-holing ¡£
> ÊÂÎó¥×¥í¥Õ¥¡¥¤¥é¤Î¥â¥Á¥Ù¡¼¥·¥ç¥ó¤¬¤ï¤«¤é¤º
ñ¤ËGHC¤Î¥Á¥å¡¼¥Ë¥ó¥°¤Î¤¿¤á¤Ë¼Â¹Ô»þ¤Î¿¶¤ëÉñ¤¤¤ò¸«¤¿¤¤¤È¤¤¤¦¤À¤±¤À¤Ã¤¿¤è¤¦¤Ê¡£
¤ª¤ª¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤¹!
> ľÎó½èÍý¤òÊ£¿ô¤Î¥Ç¡¼¥¿¤ËÂФ·¤ÆÊÂÎó¤ËŬÍѤ¹¤ë¤Î¤¬ÉáÄ̤Πdata parallelism ¤Ç¡¢ÊÂÎó½èÍý¤òÊÂÎó¤ËŬÍѤ¹¤ë¤³¤È¤òµö¤¹¤Î¤¬ nested data parallelism ¡£
¤Ê¤ë¤Û¤ÉÂçÊѤ狼¤ê¤ä¤¹¤¤¡£ÇÛÎó¤ò4¤Ä¤ËÀÚ¤ë¤Î¤¬ÉáÄ̤Τǡ¢ÇÛÎó¤ò2¤Ä¤ËÀڤ俤ä¤Ä¤ò¤µ¤é¤Ë2¤Ä¤ËÀڤäơĤߤ¿¤¤¤Ê¤³¤È¤ä¤Ã¤¿¤â¤Î¤òÊÂÎó¤Ë¤É¤¦¤³¤¦¤µ¤»¤ë¤È¤«¤½¤ó¤Ê´¶¤¸¤Ç¤¹¤«¤Í¡£¤³¤Î¤¢¤¿¤ê¤Ï¼ÁÌä¤â¤·¤¿¤±¤É¤ï¤«¤é¤ó¤«¤Ã¤¿¤Î¤Çº£ÅÙ¸«¤«¤±¤¿»þ¤Ëµ¿Ìä¤ò³Ð¤¨¤Æ¤¤¤¿¤é¼ÁÌ䤵¤»¤Æ¤¯¤À¤µ¤¤¡£
> Haskell¤ÎÂçÉôʬ¤Ç¤¢¤ëÉûºîÍѤΤʤ¤·×»»¤Ï¡¢½ÅÊ£¼Â¹Ô¤·¤Æ¤â°Ọ̃Ū¤Ë¤ÏÌäÂê¤Ê¤¤¤Î¤Ç¡¢¤½¤ì¤é¤Ë´Ø¤·¤Æ¤Ï¡Ö¤³¤Î¥µ¥ó¥¯¼Â¹ÔÃæ¤Ã¤¹¡ª¡×¥Õ¥é¥°¤Ïɬ¿Ü¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤Ç¤¹¡£¤¿¤À¡¢½ÅÊ£¼Â¹Ô¤òËɤ¤¤À¤ê¡¢Â¾¤Ë¤â´ö¤Ä¤«Îɤ¤¤³¤È¤¬¤¢¤ë¤Î¤Ç¡¢ÊÂÎó¤Ç¤âľÎó¤Ç¤âÉáÄ̤ϥե饰¤ò»È¤¤¤Þ¤¹¤¬¡£
ËͤÎǾÆâ¤Ë¤¢¤Ã¤¿ Haskell ½èÍý·Ï¤Ï¤½¤¦¤¤¤¦¥Õ¥é¥°¤¬Ìµ¤¤¤È°ì¸«ÌäÂê¤Ê¤¯¸«¤¨¤ë¤±¤É¼Â¤Ï¤â¤Î¤¹¤´¤¤¿ôºÆ·×»»¤¬µ¯¤¤Æ¤·¤Þ¤¦¡¢¤Ã¤Æ¤³¤È¤¬µ¯¤¤½¤¦¤Êµ¤¤¬¤·¤Æ¤¿¤Î¤Ç¤¹¤±¤É¡¢¤ä¤Ã¤Ñ¤½¤¦¤¤¤¦¥Õ¥é¥°»È¤¦¤ó¤Ç¤¹¤Í¡£Ç¼ÆÀ¤Ç¤¹¡£
> ¤Ç¡¢Ä¾Îó¤À¤Èñ¤Ë¥Õ¥é¥°¤ò¥µ¥ó¥¯¤ËΩ¤Æ¤ì¤ÐÎɤ¤¤Î¤À¤±¤É¡¢ÊÂÎó¤Î¾ì¹ç¤Ë¤Ï¥µ¥ó¥¯¤Î¼Â¹Ô¤ò³«»Ï¤¹¤ëÅÙ¤ËÇÓ¾½èÍý¤·¤Æ¥Õ¥é¥°¤òΩ¤Æ¤Æ¤¤¤ë¤È¡¢(ÂçÎ̤˥µ¥ó¥¯¤ò¼Â¹Ô¤¹¤ëHaskell¤Ç¤Ï)Àǽ¾åÌäÂê¤Ë¤Ê¤ë¤Î¤Ç¡¢½ÅÊ£¼Â¹Ô¤ò´°Á´¤ËËɤ°¤³¤È¤ÏÄü¤á¤ÆŬÅö¤Ë¤ä¤ë¤Î¤¬ lazy black-holing ¤ä eager black-holing ¡£
¤Ê¤ë¤Û¤É¡£¤Ê¤ó¤«µÕ¤À¤Èʹ¤¤¤¿¤è¤¦¤Ê¡£Ã±¤Ë´ª°ã¤¤¤·¤¿¤À¤±¤Î²ÄǽÀ¤¬Âç¤Ê¤Î¤Çº£ÅÙÆ°²è¤Ç¤â³Îǧ¤·¤Þ¤¹¡£
> ÇÛÎó¤ò4¤Ä¤ËÀÚ¤ë¤Î¤¬ÉáÄ̤Τǡ¢ÇÛÎó¤ò2¤Ä¤ËÀڤ俤ä¤Ä¤ò¤µ¤é¤Ë2¤Ä¤ËÀڤäơĤߤ¿¤¤¤Ê¤³¤È¤ä¤Ã¤¿¤â¤Î¤òÊÂÎó¤Ë¤É¤¦¤³¤¦¤µ¤»¤ë¤È¤«¤½¤ó¤Ê´¶¤¸¤Ç¤¹¤«¤Í¡£
¤½¤ó¤Ê´¶¤¸¤À¤È»×¤¤¤Þ¤¹¡£
¥â¥Á¥Ù¡¼¥·¥ç¥ó¤È¤·¤Æ¤Ï¡¢Á¹ÔÎó¤È¤«¥°¥é¥Õ¤ß¤¿¤¤¤Ê°ìÍͤǤʤ¤¥Ç¡¼¥¿¹½Â¤¤òÊÂÎó½èÍý¤·¤¿¤¤¤È¤¤¤¦¤Î¤¬¤¢¤ê¤Þ¤¹¡£
> ¤Ê¤ë¤Û¤É¡£¤Ê¤ó¤«µÕ¤À¤Èʹ¤¤¤¿¤è¤¦¤Ê¡£Ã±¤Ë´ª°ã¤¤¤·¤¿¤À¤±¤Î²ÄǽÀ¤¬Âç¤Ê¤Î¤Çº£ÅÙÆ°²è¤Ç¤â³Îǧ¤·¤Þ¤¹¡£
¸½ºß¤Î¥Ç¥Õ¥©¥ë¥È¤Î lazy black-holing ¤è¤ê eager black-holing ¤ÎÊý¤¬½ÅÊ£¼Â¹Ô¤¬µ¯¤³¤ê¤Ë¤¯¤¤¤Î¤Ç¡¢¤½¤Î»ö¤ò¸À¤Ã¤Æ¤¤¤¿¤Î¤Ç¤Ï¤Ê¤¤¤«¤È¡£
(lazy black-holing ¤Ï¡¢GC»þ¤Ë¥µ¥ó¥¯¤Ë¥Õ¥é¥°¤òΩ¤Æ¤Æ¡¢Æ±¤¸¥µ¥ó¥¯¤ò¼Â¹ÔÃæ¤Î¤ä¤Ä¤¬Ê£¿ô¤¤¤¿¤é»ß¤á¤ë¤È¤¤¤¦´¶¤¸¡£eager black-holing ¤Ï¤½¤ì¤Ë²Ã¤¨¤Æ¡¢¥µ¥ó¥¯¤Î¼Â¹Ô³«»Ï»þ¤Ë¡ÖÇÓ¾À©¸æ¤»¤º¤Ë¡×¤È¤ê¤¢¤¨¤º¥Õ¥é¥°¤ò½ñ¤¤¤Æ¤ª¤¯¤È¤¤¤¦´¶¤¸¡£)