线ç¨åæ¥æºå¶ï¼
临çåº(Critical Section)ãäºæ¥é(Mutex)ãäºä»¶(Event)ãä¿¡å·é(Semaphore)åç§æ¹å¼
1ã临çåºï¼å称é»å¡,éè¿å¯¹å¤çº¿ç¨ç串è¡åæ¥è®¿é®å
Œ
±èµæºæä¸æ®µä»£ç ï¼é度快ï¼éåæ§å¶æ°æ®è®¿é®ãå¨ä»»ææ¶å»åªå
许ä¸ä¸ªçº¿ç¨å¯¹å
±äº«èµæºè¿è¡è®¿é®ï¼å¦ææå¤ä¸ªçº¿ç¨è¯å¾è®¿é®å
Œ
±èµæºï¼é£ä¹å¨æä¸ä¸ªçº¿ç¨è¿å
¥åï¼å
¶ä»è¯å¾è®¿é®å
Œ
±èµæºç线ç¨å°è¢«æèµ·ï¼å¹¶ä¸ç´çå°è¿å
¥ä¸´çåºç线ç¨ç¦»å¼ï¼ä¸´çåºå¨è¢«éæ¾åï¼å
¶ä»çº¿ç¨æå¯ä»¥æ¢å ã
使ç¨ä¸´çåºåç第ä¸ä¸ªå¿ åå°±æ¯ä¸è¦é¿æ¶é´éä½ä¸ä»½èµæºãè¿éçé¿æ¶é´æ¯ç¸å¯¹çï¼è§ä¸åç¨åºèå®ã对ä¸äºæ§å¶è½¯ä»¶æ¥è¯´ï¼å¯è½æ¯æ°æ¯«ç§ï¼ä½æ¯å¯¹å¦å¤ä¸äºç¨åºæ¥è¯´ï¼å¯ä»¥é¿è¾¾æ°åéãä½è¿å
¥ä¸´çåºåå¿
须尽快å°ç¦»å¼ï¼éæ¾èµæºãå¦æä¸éæ¾çè¯ï¼ä¼å¦ä½ï¼çæ¡æ¯ä¸ä¼ææ ·ãå¦ææ¯ä¸»çº¿ç¨ï¼GUI线ç¨ï¼è¦è¿å
¥ä¸ä¸ªæ²¡æ被éæ¾ç临çåºï¼åµåµï¼ç¨åºå°±ä¼æäºï¼ä¸´çåºåçä¸ä¸ªç¼ºç¹å°±æ¯ï¼Critical Sectionä¸æ¯ä¸ä¸ªæ ¸å¿å¯¹è±¡ï¼æ æ³è·ç¥è¿å
¥ä¸´çåºç线ç¨æ¯çæ¯æ»ï¼å¦æè¿å
¥ä¸´çåºç线ç¨æäºï¼æ²¡æéæ¾ä¸´çèµæºï¼ç³»ç»æ æ³è·ç¥ï¼èä¸æ²¡æåæ³éæ¾è¯¥ä¸´çèµæºã
2ãäºæ¥éï¼éç¨äºæ¥å¯¹è±¡æºå¶ãåªææ¥æäºæ¥å¯¹è±¡ç线ç¨ææ访é®å
Œ
±èµæºçæéï¼å 为äºæ¥å¯¹è±¡åªæä¸ä¸ªï¼æ以è½ä¿è¯å
Œ
±èµæºä¸ä¼åæ¶è¢«å¤ä¸ªçº¿ç¨è®¿é®ãäºæ¥ä¸ä»
è½å®ç°åä¸åºç¨ç¨åºçå
Œ
±èµæºå®å
¨å
±äº«ï¼è¿è½å®ç°ä¸ååºç¨ç¨åºçå
Œ
±èµæºå®å
¨å
񄧮
äºæ¥æ¯è¾ç±»ä¼¼é»å¡ï¼å
³é®å¨äºäºæ¥å¯ä»¥è·¨è¿ç¨ç线ç¨åæ¥ï¼èä¸çå¾
ä¸ä¸ªè¢«éä½çMutexå¯ä»¥è®¾å®TIMEOUTï¼ä¸ä¼åCritical Sectioné£æ ·æ æ³å¾ç¥ä¸´çåºåçæ
åµï¼èä¸ç´æ»çãå¾å¤åªå
许åºç¨ç¨åºè¿è¡ä¸æ¬¡çå®ä¾å°±æ¯ç¨äºæ¥æ¹æ³æ¥å®ç°çãå½ä¸ä¸ªäºæ¥å¯¹è±¡ä¸å被ä¸ä¸ªçº¿ç¨ææ¥æï¼å®å°±å¤äºåä¿¡å·ç¶æãæ¤æ¶é¦å
è°ç¨waitForsingleobject()ç线ç¨å°±æ为该äºæ¥å¯¹è±¡çæ¥æè
ï¼æ¤äºæ¥å¯¹è±¡è®¾ä¸ºä¸åä¿¡å·ç¶æãå½çº¿ç¨è°ç¨releaseMutex()å¹¶ä¼ éä¸ä¸ªäºæ¥å¯¹è±¡çå¥æä½ä¸ºåæ°æ¶ï¼è¿ç§æ¥æå
³ç³»å°±è¢«è§£é¤ï¼äºæ¥å¯¹è±¡éæ°è¿å
¥åä¿¡å·ç¶æã
3ãä¿¡å·éï¼å®å
许å¤ä¸ªçº¿ç¨å¨åä¸æ¶å»è®¿é®åä¸èµæºï¼ä½æ¯éè¦éå¶å¨åä¸æ¶å»è®¿é®æ¤èµæºçæ大线ç¨æ°ç®, ä¿¡å·éå¢å äºèµæºè®¡æ°çåè½ï¼é¢å®æ°ç®ç线ç¨å
许åæ¶è¿å
¥è¦åæ¥ç代ç ã
4ãäºä»¶ï¼éè¿éç¥æä½çæ¹å¼æ¥ä¿æ线ç¨çåæ¥ï¼è¿å¯ä»¥æ¹ä¾¿å®ç°å¯¹å¤ä¸ªçº¿ç¨çä¼å
级æ¯è¾çæä½
è¿ç¨é讯æºå¶ï¼
1ï¼ å
åæ å°æ件(Memory-MappedFiles)
è½ä½¿è¿ç¨ææ件å
容å½ä½è¿ç¨å°ååºé´ä¸åå
åé£æ ·æ¥å¯¹å¾
, è¿ç¨ä¸å¿
使ç¨æ件I/Oæä½ï¼åªéç®åçæéæä½å°±å¯è¯»ååä¿®æ¹æ件çå
容ã
2ï¼ å
±äº«å
å(Shared Memory)
å®é
å°±æ¯æ件æ å°çä¸ç§ç¹æ®æ
åµãè¿ç¨å¨å建æ件æ å°å¯¹è±¡æ¶ç¨0xFFFFFFFFæ¥ä»£æ¿æ件å¥æ(HANDLE)ï¼å°±è¡¨ç¤ºäºå¯¹åºçæ件æ å°å¯¹è±¡æ¯ä»æä½ç³»ç»é¡µé¢æ件访é®å
åï¼å
¶å®è¿ç¨æå¼è¯¥æ件æ å°å¯¹è±¡å°±å¯ä»¥è®¿é®è¯¥å
ååãç±äºå
±äº«å
åæ¯ç¨æ件æ å°å®ç°çï¼æ以å®ä¹æè¾å¥½çå®å
¨æ§ï¼ä¹åªè½è¿è¡äºåä¸è®¡ç®æºä¸çè¿ç¨ä¹é´ã
3ï¼ ç®¡é(Pipe)
æ¯ä¸ç§å
·æ两个端ç¹çéä¿¡ééï¼æä¸ç«¯å¥æçè¿ç¨å¯ä»¥åæå¦ä¸ç«¯å¥æçè¿ç¨éä¿¡ã管éå¯ä»¥æ¯ååï¼ä¸ç«¯æ¯åªè¯»çï¼å¦ä¸ç«¯ç¹æ¯åªåçï¼ä¹å¯ä»¥æ¯ååçä¸ç®¡éç两端ç¹æ¢å¯è¯»ä¹å¯åã
å¿å管é(Anonymous Pipe)æ¯å¨ç¶è¿ç¨ååè¿ç¨ä¹é´ï¼æåä¸ç¶è¿ç¨ç两个åè¿ç¨ä¹é´ä¼ è¾æ°æ®çæ ååçåå管éãå½å管é(Named Pipe)æ¯æå¡å¨è¿ç¨åä¸ä¸ªæå¤ä¸ªå®¢æ·è¿ç¨ä¹é´éä¿¡çååæåå管éã
4ï¼ Sockets
5ï¼WM_COPYDATAæ¶æ¯
温馨提示:答案为网友推荐,仅供参考