mutexã¯ã¹ã¬ããéã®æä»å¦çãããããã®æ©æ§ã ãï¼ä¸è¬çãªthreadã©ã¤ãã©ãªã®ããã©ã«ãã®mutexã«ã¯å¤§ããªåé¡ãããï¼ããmutexãæ¢ã«lockãã¦ããthreadãå度åãmutexãlockãããã¨ããã¨ãããã¯ãã¦ãã¾ãã®ã ï¼ãã¨ãã°ï¼thread bufferã®ä¾ã§ï¼emptyãå¤å®ããé¨åãå¥ã¡ã½ããã«ãã¦ï¼ãã¡ããlockããããããã«æ¸ãç´ãã¦ã¿ãï¼ class buffer { list<int> queue; boost::condition_variable cond; boost::mutex mut; public: bool empty() { boost::lock_guard<boost::recursive_mutex> lock(mut); return queue.empty(); } ... int pop() throw(out_of_
Linux + glibc ã®ã¹ã¬ããã§æ°ããªè¬ãã linux-2.6.13 + x86_64-pc-linux-gnu-gcc-3.4.4 + glibc-2.3.5 (Linux Thread) ã®çµã¿åããã§ãã試ãã¦ããªãã®ã§ããããã«ãã¹ã¬ãããªã³ã¼ãã®ã«ã¼ãä¸ã§ rand(3) ã使ãã¨ããã¾ãããã·ã³ãéãããªãã¾ãã æ°ååãã¹ã¬ãããä½ãã¨ãã¼ãã¼ãã«åå¿ããã®ã«ããåæ°ç§ãããããã«ãªãã¾ããã ä¸æ¹ãã©ãããããã ã rand_r(3) ã ã¨å¤§ä¸å¤«ã§ãã 仮説: ã²ãã£ã¨ãã¦ãrand(3) ã® seed ã libc å ã§å¼ãéã« mutex ã¨ã semaphore ã¨ãã§ããã¯ãã¦ããã®ã§ã¯ããã¾ããï¼ (ç似乱æ°ã®ç´åæ§ãå®ãããï¼) 証æ: é¢åãªã®ã§è©²å½ç®æã rand_r(3) ã«æ¸ãæãã¦ã»ã£ãããã (^^; # NPTL ã ã¨éã£ããããã®ã§ãã
flex & bison ããã㦠re2c & bison ã«ããããã¼ãµãéããªã£ããre2c 㯠UTF32 ã®å ¥åã«å¯¾å¿ãã¦ããã®ã§é常ã«ãã£ããæ¸ãããè¨è¨ãæªã¾ãªãã re2c is a tool for writing very fast and very flexible scanners. Unlike any other such tool, re2c focuses on generating high efficient code for regular expression matching. re2c 㯠flex ã¨ã¯äºæããªãç¬èªã®ãã¯ããªã©ãå®ç¾©ããªãã¦ã¯ãããªãã®ã§æ³¨æããµã³ãã«ã¨ããã¥ã¡ã³ãã®å°ãªãã®ããã¤ãã¹ãã¤ã³ãã ãããã UTF32 ãå©ç¨ãã¦ããä¾ãªãã¦è¦ã¤ããããªãã£ãã re2c ã§å¤åé£ããã®ã¯ YYFILL ï¼flex ã§ããã¨ãã
C++ ã§lexer/parserããããªã re2c+lemon ããªã¹ã¹ã¡ãªä»¶ yacc ã lex ãã¤ãã£ã¦ãã¦ãããªãããããããããã©ããããã¨ããç¶æ ã«ãªããã¡ã ã£ãããã°ãã¼ãã«å¤æ°ã«ã¾ã¿ãããããã¡ã ããre2c + lemon ã ã¨ãã®ã¸ãããã£ããããã ã¬ããµã以ä¸ã®ããã«ãããyyfill ãèªåã§ãããªããã°ãããªãã®ãã¡ãã£ã¨é¢åã ãããã®ãããªã¯ã©ã¹ãæ軽ã«ãããã®ã¯ãã¯ã便å©ã§ãããflex ã§ã¯ããã¯ãããªãã®ã ã #ifndef CALC_SCANNER_H_ #define CALC_SCANNER_H_ #include <stdio.h> #include <string.h> #include <string> #include <sstream> #include <vector> #include <iostream> #include <
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}