2008-01-01ãã1ã¶æéã®è¨äºä¸è¦§
boost::shared_ptr ã使ã£ã¦ãã¨æã åé¡ã«ãªãã®ããthis ã®æ±ããthis ã¯çã®ãã¤ã³ã¿ãªã®ã§åºæ¥ãéã触ããããªããããã©ãã©ããã¦ã this ãå¿ è¦ã«ãªãå ´åããã£ãããããä¾ãã°ããã«ãã£ã¹ãããã¨ãã ãããã£ã this ã®ã¹ãã¼ããã¤ã³ã¿ã欲ãâ¦
ããä¸æãªç¢ºçã§åºç¾ããç¯å²ã®ä¹±æ°ãå¾ãããã« variate_generator ã使ã£ã¦ä¹±æ°ãåãåºãã¦ããã ãã©ãvariate_generator ã¯ä¸åº¦ä½ã£ããç¯å²ãå¤æ´ã§ããªãã ãªã®ã§ã // [first, last) int rnd = boost::variate_generator<boost::mt19937, boost::uniform_int<int> >(mt_, boost::uniform_int<int></int></boost::mt19937,>â¦
ãã Immutable ãªæååã¯ã©ã¹ãä½ã£ãå ´åãæååã®ä¸é¨ãåãåºãã¨ããããããæ°ããã¡ã¢ãªã確ä¿ããªãã¦ãåãåºããã¨ãåºæ¥ããããªæ°ããã¦ããã /* final */ class string { private: const boost::shared_ptr<wchar_t> str_; const int first_; const i</wchar_t>â¦
ã調ã¹ãããã«ãè¶ ç°¡å㪠Boost.Bind ãä½ã£ã¦ã¿ãã namespace my_boost { // arg template<int I> class arg { }; template<int I> bool operator==(arg<I> const &, arg<I> const &) { return true; } // type template<class T> class type { }; namespace _bi { // storage1 template<class A1></class></class></i></i></int></int>â¦
public static class Boost { public class PlaceHolder { public PlaceHolder(int v) { Value = v; } public int Value; } public static PlaceHolder _1 = new PlaceHolder(1); public static PlaceHolder _2 = new PlaceHolder(2); public static PlaceHoâ¦
ã¨ããããå ¨é¨ã®å¼æ°ãæç¸ããã®ã§ããã°ç°¡åã«ä½ããããã ã delegate R Function<R>(); delegate R Function<R, T1>(T1 t1); delegate R Function<R, T1, T2>(T1 t1, T2 t2); // 以ä¸ç¥ Function<R> Bind<R>(Function<R> f) { return delegate { return f(); }; } Function<R> Bind<R, T1>(Funct</r,></r></r></r></r></r,></r,></r>â¦
ã¨æã£ããã ãã©ã©ãããã°ãããã ããã
æ±ç¨çã«éåæã¡ãã»ã¼ã¸ãæãã¦æ»ãå¤ãè¿ãã¦ãããã¯ã©ã¹ãä½ãã¾ããã async_delegate::invoke ã«é¢æ°ãè¨å®ããã¨ããã®é¢æ°ãå¥ã¹ã¬ããããå¼ã³åºãã¾ãã async_delegate::invoke ã®æ»ãå¤ã§ãã async_result_ptr ã使ã£ã¦ãåæå¦çãè¡ããå¼â¦
Java ã® interrupt æ©æ§ã¿ãããªã®ã¯ Boost.Thread ã«ç¡ãã¿ãããªãã§ããã ãããã調ã¹ã¦ã¿ãçµæ interruptable_mutex.h ã¨ããã®ãåå¨ããã¨ãããã¨ãåãã£ãã®ã§ããããã¾ãã¡ä½¿ãæ¹ãåããã¾ããã ãã¨ã¹ãã«ã¯ interruptable ã§ã¯ãªã㦠inteâ¦
ä¾ãã°æ°ç¾ä¸è¡ãããã®å¤§ããã½ã¼ã¹ããã£ã¦ãããã§ã¯çã®ãã¤ã³ã¿ãããªããªä½¿ããã¦ããã¨ããã ã§ãããããã¼ã¸ã£ã¯ã©ã¹ãçæãããªãã¸ã§ã¯ãã®ãã¤ã³ã¿ãããããªã¨ããã«ã³ãã¼ãã¦ããã®ã§ãçµäºæã«ããã¼ã¸ã£ã¯ã©ã¹ããã®ãã¤ã³ã¿ãå ã«åé¤ãâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã éåæã¡ãã»ã¼ã¸ã®æ»ãå¤ãåãåãããã®ãã¿ã¼ã³ ãããC# ã®åæã¡ã½ããã®éåæå¼ã³åºãã§ä½¿ããã¦ããã¿ã¼ã³ã¨åããªã®ããªã data ã¯ã©ã¹ã¯ IAsyncResult ã«å¯¾å¿ãã¦ãhost ã¯ã©ã¹ã¯ Beginã, Endã ãæâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã ã¹ã¬ãããèµ·åããæéãã±ããã®ã¨ãã¹ã¬ããæ°ã®ç®¡çãè¡ããã¿ã¼ã³ã 以ä¸ã¯å¢è£æ¹è¨ç Javaè¨èªã§å¦ã¶ãã¶ã¤ã³ãã¿ã¼ã³å ¥é ãã«ãã¹ã¬ããç·¨ã®ãµã³ãã«ã Boost.Thread ã使ã£ã¦æ¸ããã³ã¼ãã ãããrequesâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã éåæã¡ãã»ã¼ã¸ã®æãã£ã±ãªããã¼ã¸ã§ã³ã æ»ãå¤ã欲ããå ´å㯠Future ãã¿ã¼ã³ã使ç¨ããã 以ä¸ã¯å¢è£æ¹è¨ç Javaè¨èªã§å¦ã¶ãã¶ã¤ã³ãã¿ã¼ã³å ¥é ãã«ãã¹ã¬ããç·¨ã®ãµã³ãã«ã Boost.Thread ã使ã£ã¦æ¸ãâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã Immutable ã¯ä»¥ä¸ã®å ´åã«ä½¿ç¨ã§ãã ã¤ã³ã¹ã¿ã³ã¹ã®çæå¾ãç¶æ ï¼ã¡ã³ãï¼ãå¤åããªãã¨ã ãã®ã¨ããsetter ã¡ã½ãããç¡ãã¨ããã ãã§ã¯ä¸ååã§ãã¡ã³ããåç §ãã¦ããå ã®ã¤ã³ã¹ã¿ã³ã¹ãå¤åããªãå¿ è¦ãâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã Single Thread Execution ã¯ã以ä¸ã®å ´åã«ä½¿ç¨ãããã ãã«ãã¹ã¬ããã®å ´å SharedResource å½¹ãè¤æ°ã®ã¹ã¬ããããã¢ã¯ã»ã¹ãããå ´å ç¶æ ï¼ã¡ã³ãï¼ãå¤åããå¯è½æ§ãããã¨ã ãããããã¯ã«ãªãå¯è½æ§ãâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ã®ä¸ã¤ã« Before/After ãã¿ã¼ã³ã¨ããã®ããããããã¦ããã㯠Before å¦çãããã After å¦çãå¿ ãè¡ãããã«ä¿è¨¼ãããã¿ã¼ã³ãããã Java ãªããããªé¢¨ã«æ¸ãã public void func() { hoge.before(); try { doSomething(); } finallâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã æ¸ãè¾¼ã¿ãè¡ã£ã¦ããå ´åã«ã ãæä»å¶å¾¡ãè¡ããã¿ã¼ã³ã Boost ã«ã¯ read_write_mutex ã¨ããã®ããã£ã¦ãããã使ãã° Read-Write Lock ãå®ç¾ãããã¨ãã§ï½â¦â¦ã£ã¦ãã¼ã¸ã§ã³1.34.1 ã ã¨ããã¥ã¡ã³ãã«ã¯ããâ¦
Java ã®ãã«ãã¹ã¬ãããªã³ã¼ããèªãã§ããã¨ãä¸å¤æ§ãä¿ã¤ããã« final ã使ç¨ããã¦ãããã¨ãå¤ãã public final class Immutable { private final String field1; private final String field2; ... } final ã¡ã³ã㯠const ã§ä»£ç¨ã§ããã¨ãã¦ãfinaâ¦
ãã¶ã¤ã³ãã¿ã¼ã³ï¼ãã«ãã¹ã¬ããï¼ã¾ã¨ã ããã¹ã¬ããããå¥ã®ã¹ã¬ããã«ãã¼ã¿ã渡ãããã®ãã¿ã¼ã³ã ã¨ããã Guarded Suspension ã¨ã©ãéãã®ãããåãããªãã ä¸èº«ã¯ã»ã¨ãã©åãã ãã©ããã®ç®çãéãã®ããªãâ¦â¦ã 以ä¸ã¯å¢è£æ¹è¨ç Javaè¨èªã§â¦