锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲福利视频二区,国产日韩成人精品,亚洲欧美成人一区二区在线电影 http://www.shnenglu.com/yehao/category/16706.htmlzh-cnSun, 24 Apr 2011 15:14:55 GMTSun, 24 Apr 2011 15:14:55 GMT60Linux涓嬬殑澶氱嚎紼嬬紪紼?/title><link>http://www.shnenglu.com/yehao/articles/144908.html</link><dc:creator>鍘氱Н钖勫彂</dc:creator><author>鍘氱Н钖勫彂</author><pubDate>Sun, 24 Apr 2011 10:47:00 GMT</pubDate><guid>http://www.shnenglu.com/yehao/articles/144908.html</guid><wfw:comment>http://www.shnenglu.com/yehao/comments/144908.html</wfw:comment><comments>http://www.shnenglu.com/yehao/articles/144908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/yehao/comments/commentRss/144908.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yehao/services/trackbacks/144908.html</trackback:ping><description><![CDATA[<font size=3>杞嚜<a >http://fanqiang.chinaunix.net/a4/b8/20010811/0905001105.html</a><br></font><br>1 寮曡█<br>銆銆綰跨▼錛坱hread錛夋妧鏈棭鍦?0騫翠唬灝辮鎻愬嚭錛屼絾鐪熸搴旂敤澶氱嚎紼嬪埌鎿嶄綔緋葷粺涓幓錛屾槸鍦?0騫翠唬涓湡錛宻olaris鏄繖鏂歸潰鐨勪郊浣艱呫備紶緇熺殑Unix涔熸敮鎸佺嚎紼嬬殑姒傚康錛屼絾鏄湪涓涓繘紼嬶紙process錛変腑鍙厑璁告湁涓涓嚎紼嬶紝榪欐牱澶氱嚎紼嬪氨鎰忓懗鐫澶氳繘紼嬨傜幇鍦紝澶氱嚎紼嬫妧鏈凡緇忚璁稿鎿嶄綔緋葷粺鎵鏀寔錛屽寘鎷琖indows/NT錛屽綋鐒訛紝涔熷寘鎷琇inux銆?br>銆銆涓轟粈涔堟湁浜嗚繘紼嬬殑姒傚康鍚庯紝榪樿鍐嶅紩鍏ョ嚎紼嬪憿錛熶嬌鐢ㄥ綰跨▼鍒板簳鏈夊摢浜涘ソ澶勶紵浠涔堢殑緋葷粺搴旇閫夌敤澶氱嚎紼嬶紵鎴戜滑棣栧厛蹇呴』鍥炵瓟榪欎簺闂銆?br>銆銆浣跨敤澶氱嚎紼嬬殑鐞嗙敱涔嬩竴鏄拰榪涚▼鐩告瘮錛屽畠鏄竴縐嶉潪甯?鑺備凱"鐨勫浠誨姟鎿嶄綔鏂瑰紡銆傛垜浠煡閬擄紝鍦↙inux緋葷粺涓嬶紝鍚姩涓涓柊鐨勮繘紼嬪繀欏誨垎閰嶇粰瀹冪嫭绔嬬殑鍦板潃絀洪棿錛屽緩绔嬩紬澶氱殑鏁版嵁琛ㄦ潵緇存姢瀹冪殑浠g爜孌點佸爢鏍堟鍜屾暟鎹錛岃繖鏄竴縐?鏄傝吹"鐨勫浠誨姟宸ヤ綔鏂瑰紡銆傝岃繍琛屼簬涓涓繘紼嬩腑鐨勫涓嚎紼嬶紝瀹冧滑褰兼涔嬮棿浣跨敤鐩稿悓鐨勫湴鍧絀洪棿錛屽叡浜ぇ閮ㄥ垎鏁版嵁錛屽惎鍔ㄤ竴涓嚎紼嬫墍鑺辮垂鐨勭┖闂磋繙榪滃皬浜庡惎鍔ㄤ竴涓繘紼嬫墍鑺辮垂鐨勭┖闂達紝鑰屼笖錛岀嚎紼嬮棿褰兼鍒囨崲鎵闇鐨勬椂闂翠篃榪滆繙灝忎簬榪涚▼闂村垏鎹㈡墍闇瑕佺殑鏃墮棿銆傛嵁緇熻錛屾葷殑璇存潵錛屼竴涓繘紼嬬殑寮閿澶х害鏄竴涓嚎紼嬪紑閿鐨?0鍊嶅乏鍙籌紝褰撶劧錛屽湪鍏蜂綋鐨勭郴緇熶笂錛岃繖涓暟鎹彲鑳戒細鏈夎緝澶х殑鍖哄埆銆?br>銆銆浣跨敤澶氱嚎紼嬬殑鐞嗙敱涔嬩簩鏄嚎紼嬮棿鏂逛究鐨勯氫俊鏈哄埗銆傚涓嶅悓榪涚▼鏉ヨ錛屽畠浠叿鏈夌嫭绔嬬殑鏁版嵁絀洪棿錛岃榪涜鏁版嵁鐨勪紶閫掑彧鑳介氳繃閫氫俊鐨勬柟寮忚繘琛岋紝榪欑鏂瑰紡涓嶄粎璐規椂錛岃屼笖寰堜笉鏂逛究銆傜嚎紼嬪垯涓嶇劧錛岀敱浜庡悓涓榪涚▼涓嬬殑綰跨▼涔嬮棿鍏變韓鏁版嵁絀洪棿錛屾墍浠ヤ竴涓嚎紼嬬殑鏁版嵁鍙互鐩存帴涓哄叾瀹冪嚎紼嬫墍鐢紝榪欎笉浠呭揩鎹鳳紝鑰屼笖鏂逛究銆傚綋鐒訛紝鏁版嵁鐨勫叡浜篃甯︽潵鍏朵粬涓浜涢棶棰橈紝鏈夌殑鍙橀噺涓嶈兘鍚屾椂琚袱涓嚎紼嬫墍淇敼錛屾湁鐨勫瓙紼嬪簭涓0鏄庝負static鐨勬暟鎹洿鏈夊彲鑳界粰澶氱嚎紼嬬▼搴忓甫鏉ョ伨闅炬х殑鎵撳嚮錛岃繖浜涙鏄紪鍐欏綰跨▼紼嬪簭鏃舵渶闇瑕佹敞鎰忕殑鍦版柟銆?br>銆銆闄や簡浠ヤ笂鎵璇寸殑浼樼偣澶栵紝涓嶅拰榪涚▼姣旇緝錛屽綰跨▼紼嬪簭浣滀負涓縐嶅浠誨姟銆佸茍鍙戠殑宸ヤ綔鏂瑰紡錛屽綋鐒舵湁浠ヤ笅鐨勪紭鐐癸細<br>銆銆1) 鎻愰珮搴旂敤紼嬪簭鍝嶅簲銆傝繖瀵瑰浘褰㈢晫闈㈢殑紼嬪簭灝ゅ叾鏈夋剰涔夛紝褰撲竴涓搷浣滆楁椂寰堥暱鏃訛紝鏁翠釜緋葷粺閮戒細絳夊緟榪欎釜鎿嶄綔錛屾鏃剁▼搴忎笉浼氬搷搴旈敭鐩樸侀紶鏍囥佽彍鍗曠殑鎿嶄綔錛岃屼嬌鐢ㄥ綰跨▼鎶鏈紝灝嗚楁椂闀跨殑鎿嶄綔錛坱ime consuming錛夌疆浜庝竴涓柊鐨勭嚎紼嬶紝鍙互閬垮厤榪欑灝村艾鐨勬儏鍐點?br>銆銆2) 浣垮CPU緋葷粺鏇村姞鏈夋晥銆傛搷浣滅郴緇熶細淇濊瘉褰撶嚎紼嬫暟涓嶅ぇ浜嶤PU鏁扮洰鏃訛紝涓嶅悓鐨勭嚎紼嬭繍琛屼簬涓嶅悓鐨凜PU涓娿?br>銆銆3) 鏀瑰杽紼嬪簭緇撴瀯銆備竴涓棦闀垮張澶嶆潅鐨勮繘紼嬪彲浠ヨ冭檻鍒嗕負澶氫釜綰跨▼錛屾垚涓哄嚑涓嫭绔嬫垨鍗婄嫭绔嬬殑榪愯閮ㄥ垎錛岃繖鏍風殑紼嬪簭浼氬埄浜庣悊瑙e拰淇敼銆?br>銆銆涓嬮潰鎴戜滑鍏堟潵灝濊瘯緙栧啓涓涓畝鍗曠殑澶氱嚎紼嬬▼搴忋?br><br>2 綆鍗曠殑澶氱嚎紼嬬紪紼?br>銆銆Linux緋葷粺涓嬬殑澶氱嚎紼嬮伒寰狿OSIX綰跨▼鎺ュ彛錛岀О涓簆thread銆傜紪鍐橪inux涓嬬殑澶氱嚎紼嬬▼搴忥紝闇瑕佷嬌鐢ㄥご鏂囦歡pthread.h錛岃繛鎺ユ椂闇瑕佷嬌鐢ㄥ簱libpthread.a銆傞『渚胯涓涓嬶紝Linux涓媝thread鐨勫疄鐜版槸閫氳繃緋葷粺璋冪敤clone錛堬級鏉ュ疄鐜扮殑銆俢lone錛堬級鏄疞inux鎵鐗規湁鐨勭郴緇熻皟鐢紝瀹冪殑浣跨敤鏂瑰紡綾諱技fork錛屽叧浜巆lone錛堬級鐨勮緇嗘儏鍐碉紝鏈夊叴瓚g殑璇昏呭彲浠ュ幓鏌ョ湅鏈夊叧鏂囨。璇存槑銆備笅闈㈡垜浠睍紺轟竴涓渶綆鍗曠殑澶氱嚎紼嬬▼搴廵xample1.c銆? <p style="COLOR: #000000"></p> <p style="COLOR: #000000">/* example.c*/<br>#include <stdio.h><br>#include <pthread.h><br>void thread(void)<br>{<br>int i;<br>for(i=0;i<3;i++)<br>printf("This is a pthread.\n");<br>}</p> <p style="COLOR: #000000">int main(void)<br>{<br>pthread_t id;<br>int i,ret;<br>ret=pthread_create(&id,NULL,(void *) thread,NULL);<br>if(ret!=0){<br>printf ("Create pthread error!\n");<br>exit (1);<br>}<br>for(i=0;i<3;i++)<br>printf("This is the main process.\n");<br>pthread_join(id,NULL);<br>return (0);<br>}</p> <p style="COLOR: #000000">鎴戜滑緙栬瘧姝ょ▼搴忥細<br>gcc example1.c -lpthread -o example1<br>榪愯example1錛屾垜浠緱鍒板涓嬬粨鏋滐細<br>This is the main process.<br>This is a pthread.<br>This is the main process.<br>This is the main process.<br>This is a pthread.<br>This is a pthread.<br>鍐嶆榪愯錛屾垜浠彲鑳藉緱鍒板涓嬬粨鏋滐細<br>This is a pthread.<br>This is the main process.<br>This is a pthread.<br>This is the main process.<br>This is a pthread.<br>This is the main process.<br><br>銆銆鍓嶅悗涓ゆ緇撴灉涓嶄竴鏍鳳紝榪欐槸涓や釜綰跨▼浜夊ずCPU璧勬簮鐨勭粨鏋溿備笂闈㈢殑紺轟緥涓紝鎴戜滑浣跨敤鍒頒簡涓や釜鍑芥暟錛屻銆pthread_create鍜宲thread_join錛屽茍澹版槑浜嗕竴涓猵thread_t鍨嬬殑鍙橀噺銆?br>銆銆pthread_t鍦ㄥご鏂囦歡/usr/include/bits/pthreadtypes.h涓畾涔夛細<br>銆銆typedef unsigned long int pthread_t;<br>銆銆瀹冩槸涓涓嚎紼嬬殑鏍囪瘑絎︺傚嚱鏁皃thread_create鐢ㄦ潵鍒涘緩涓涓嚎紼嬶紝瀹冪殑鍘熷瀷涓猴細<br>銆銆extern int pthread_create __P ((pthread_t *__thread, __const pthread_attr_t *__attr,<br>銆銆void *(*__start_routine) (void *), void *__arg));<br>銆銆絎竴涓弬鏁頒負鎸囧悜綰跨▼鏍囪瘑絎︾殑鎸囬拡錛岀浜屼釜鍙傛暟鐢ㄦ潵璁劇疆綰跨▼灞炴э紝絎笁涓弬鏁版槸綰跨▼榪愯鍑芥暟鐨勮搗濮嬪湴鍧錛屾渶鍚庝竴涓弬鏁版槸榪愯鍑芥暟鐨勫弬鏁般傝繖閲岋紝鎴戜滑鐨勫嚱鏁皌hread涓嶉渶瑕佸弬鏁幫紝鎵浠ユ渶鍚庝竴涓弬鏁拌涓虹┖鎸囬拡銆傜浜屼釜鍙傛暟鎴戜滑涔熻涓虹┖鎸囬拡錛岃繖鏍峰皢鐢熸垚榛樿灞炴х殑綰跨▼銆傚綰跨▼灞炴х殑璁懼畾鍜屼慨鏀規垜浠皢鍦ㄤ笅涓鑺傞槓榪般傚綋鍒涘緩綰跨▼鎴愬姛鏃訛紝鍑芥暟榪斿洖0錛岃嫢涓嶄負0鍒欒鏄庡垱寤虹嚎紼嬪け璐ワ紝甯歌鐨勯敊璇繑鍥炰唬鐮佷負EAGAIN鍜孍INVAL銆傚墠鑰呰〃紺虹郴緇熼檺鍒跺垱寤烘柊鐨勭嚎紼嬶紝渚嬪綰跨▼鏁扮洰榪囧浜嗭紱鍚庤呰〃紺虹浜屼釜鍙傛暟浠h〃鐨勭嚎紼嬪睘鎬у奸潪娉曘傚垱寤虹嚎紼嬫垚鍔熷悗錛屾柊鍒涘緩鐨勭嚎紼嬪垯榪愯鍙傛暟涓夊拰鍙傛暟鍥涚‘瀹氱殑鍑芥暟錛屽師鏉ョ殑綰跨▼鍒欑戶緇繍琛屼笅涓琛屼唬鐮併?br>銆銆鍑芥暟pthread_join鐢ㄦ潵絳夊緟涓涓嚎紼嬬殑緇撴潫銆傚嚱鏁板師鍨嬩負錛?br>銆銆extern int pthread_join __P ((pthread_t __th, void **__thread_return));<br>銆銆絎竴涓弬鏁頒負琚瓑寰呯殑綰跨▼鏍囪瘑絎︼紝絎簩涓弬鏁頒負涓涓敤鎴峰畾涔夌殑鎸囬拡錛屽畠鍙互鐢ㄦ潵瀛樺偍琚瓑寰呯嚎紼嬬殑榪斿洖鍊箋傝繖涓嚱鏁版槸涓涓嚎紼嬮樆濉炵殑鍑芥暟錛岃皟鐢ㄥ畠鐨勫嚱鏁板皢涓鐩寸瓑寰呭埌琚瓑寰呯殑綰跨▼緇撴潫涓烘錛屽綋鍑芥暟榪斿洖鏃訛紝琚瓑寰呯嚎紼嬬殑璧勬簮琚敹鍥炪備竴涓嚎紼嬬殑緇撴潫鏈変袱縐嶉斿緞錛屼竴縐嶆槸璞℃垜浠笂闈㈢殑渚嬪瓙涓鏍鳳紝鍑芥暟緇撴潫浜嗭紝璋冪敤瀹冪殑綰跨▼涔熷氨緇撴潫浜嗭紱鍙︿竴縐嶆柟寮忔槸閫氳繃鍑芥暟pthread_exit鏉ュ疄鐜般傚畠鐨勫嚱鏁板師鍨嬩負錛?br>銆銆extern void pthread_exit __P ((void *__retval)) __attribute__ ((__noreturn__));<br>銆銆鍞竴鐨勫弬鏁版槸鍑芥暟鐨勮繑鍥炰唬鐮侊紝鍙pthread_join涓殑絎簩涓弬鏁皌hread_return涓嶆槸NULL錛岃繖涓煎皢琚紶閫掔粰thread_return銆傛渶鍚庤璇存槑鐨勬槸錛屼竴涓嚎紼嬩笉鑳借澶氫釜綰跨▼絳夊緟錛屽惁鍒欑涓涓帴鏀跺埌淇″彿鐨勭嚎紼嬫垚鍔熻繑鍥烇紝鍏朵綑璋冪敤pthread_join鐨勭嚎紼嬪垯榪斿洖閿欒浠g爜ESRCH銆?br>銆銆鍦ㄨ繖涓鑺傞噷錛屾垜浠紪鍐欎簡涓涓渶綆鍗曠殑綰跨▼錛屽茍鎺屾彙浜嗘渶甯哥敤鐨勪笁涓嚱鏁皃thread_create錛宲thread_join鍜宲thread_exit銆備笅闈紝鎴戜滑鏉ヤ簡瑙g嚎紼嬬殑涓浜涘父鐢ㄥ睘鎬т互鍙婂浣曡緗繖浜涘睘鎬с?/p> <p style="COLOR: #000000">3 淇敼綰跨▼鐨勫睘鎬?br>銆銆鍦ㄤ笂涓鑺傜殑渚嬪瓙閲岋紝鎴戜滑鐢╬thread_create鍑芥暟鍒涘緩浜嗕竴涓嚎紼嬶紝鍦ㄨ繖涓嚎紼嬩腑錛屾垜浠嬌鐢ㄤ簡榛樿鍙傛暟錛屽嵆灝嗚鍑芥暟鐨勭浜屼釜鍙傛暟璁句負NULL銆傜殑紜紝瀵瑰ぇ澶氭暟紼嬪簭鏉ヨ錛屼嬌鐢ㄩ粯璁ゅ睘鎬у氨澶熶簡錛屼絾鎴戜滑榪樻槸鏈夊繀瑕佹潵浜嗚В涓涓嬬嚎紼嬬殑鏈夊叧灞炴с?br>銆銆灞炴х粨鏋勪負pthread_attr_t錛屽畠鍚屾牱鍦ㄥご鏂囦歡/usr/include/pthread.h涓畾涔夛紝鍠滄榪芥牴闂簳鐨勪漢鍙互鑷繁鍘繪煡鐪嬨傚睘鎬у間笉鑳界洿鎺ヨ緗紝欏諱嬌鐢ㄧ浉鍏沖嚱鏁拌繘琛屾搷浣滐紝鍒濆鍖栫殑鍑芥暟涓簆thread_attr_init錛岃繖涓嚱鏁板繀欏誨湪pthread_create鍑芥暟涔嬪墠璋冪敤銆傚睘鎬у璞′富瑕佸寘鎷槸鍚︾粦瀹氥佹槸鍚﹀垎紱匯佸爢鏍堝湴鍧銆佸爢鏍堝ぇ灝忋佷紭鍏堢駭銆傞粯璁ょ殑灞炴т負闈炵粦瀹氥侀潪鍒嗙銆佺己鐪?M鐨勫爢鏍堛佷笌鐖惰繘紼嬪悓鏍風駭鍒殑浼樺厛綰с?br>銆銆鍏充簬綰跨▼鐨勭粦瀹氾紝鐗墊秹鍒板彟澶栦竴涓蹇碉細杞昏繘紼嬶紙LWP錛歀ight Weight Process錛夈傝交榪涚▼鍙互鐞嗚В涓哄唴鏍哥嚎紼嬶紝瀹冧綅浜庣敤鎴峰眰鍜岀郴緇熷眰涔嬮棿銆傜郴緇熷綰跨▼璧勬簮鐨勫垎閰嶃佸綰跨▼鐨勬帶鍒舵槸閫氳繃杞昏繘紼嬫潵瀹炵幇鐨勶紝涓涓交榪涚▼鍙互鎺у埗涓涓垨澶氫釜綰跨▼銆傞粯璁ょ姸鍐典笅錛屽惎鍔ㄥ灝戣交榪涚▼銆佸摢浜涜交榪涚▼鏉ユ帶鍒跺摢浜涚嚎紼嬫槸鐢辯郴緇熸潵鎺у埗鐨勶紝榪欑鐘跺喌鍗崇О涓洪潪緇戝畾鐨勩傜粦瀹氱姸鍐典笅錛屽垯欏懼悕鎬濅箟錛屽嵆鏌愪釜綰跨▼鍥哄畾鐨?緇?鍦ㄤ竴涓交榪涚▼涔嬩笂銆傝緇戝畾鐨勭嚎紼嬪叿鏈夎緝楂樼殑鍝嶅簲閫熷害錛岃繖鏄洜涓篊PU鏃墮棿鐗囩殑璋冨害鏄潰鍚戣交榪涚▼鐨勶紝緇戝畾鐨勭嚎紼嬪彲浠ヤ繚璇佸湪闇瑕佺殑鏃跺欏畠鎬繪湁涓涓交榪涚▼鍙敤銆傞氳繃璁劇疆琚粦瀹氱殑杞昏繘紼嬬殑浼樺厛綰у拰璋冨害綰у彲浠ヤ嬌寰楃粦瀹氱殑綰跨▼婊¤凍璇稿瀹炴椂鍙嶅簲涔嬬被鐨勮姹傘?br>銆銆璁劇疆綰跨▼緇戝畾鐘舵佺殑鍑芥暟涓簆thread_attr_setscope錛屽畠鏈変袱涓弬鏁幫紝絎竴涓槸鎸囧悜灞炴х粨鏋勭殑鎸囬拡錛岀浜屼釜鏄粦瀹氱被鍨嬶紝瀹冩湁涓や釜鍙栧鹼細PTHREAD_SCOPE_SYSTEM錛堢粦瀹氱殑錛夊拰PTHREAD_SCOPE_PROCESS錛堥潪緇戝畾鐨勶級銆備笅闈㈢殑浠g爜鍗沖垱寤轟簡涓涓粦瀹氱殑綰跨▼銆?br>#include <pthread.h><br>pthread_attr_t attr;<br>pthread_t tid;</p> <p style="COLOR: #000000">/*鍒濆鍖栧睘鎬у鹼紝鍧囪涓洪粯璁ゅ?/<br>pthread_attr_init(&attr);<br>pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);</p> <p style="COLOR: #000000">pthread_create(&tid, &attr, (void *) my_function, NULL);</p> <p style="COLOR: #000000">銆銆綰跨▼鐨勫垎紱葷姸鎬佸喅瀹氫竴涓嚎紼嬩互浠涔堟牱鐨勬柟寮忔潵緇堟鑷繁銆傚湪涓婇潰鐨勪緥瀛愪腑錛屾垜浠噰鐢ㄤ簡綰跨▼鐨勯粯璁ゅ睘鎬э紝鍗充負闈炲垎紱葷姸鎬侊紝榪欑鎯呭喌涓嬶紝鍘熸湁鐨勭嚎紼嬬瓑寰呭垱寤虹殑綰跨▼緇撴潫銆傚彧鏈夊綋pthread_join錛堬級鍑芥暟榪斿洖鏃訛紝鍒涘緩鐨勭嚎紼嬫墠綆楃粓姝紝鎵嶈兘閲婃斁鑷繁鍗犵敤鐨勭郴緇熻祫婧愩傝屽垎紱葷嚎紼嬩笉鏄繖鏍峰瓙鐨勶紝瀹冩病鏈夎鍏朵粬鐨勭嚎紼嬫墍絳夊緟錛岃嚜宸辮繍琛岀粨鏉熶簡錛岀嚎紼嬩篃灝辯粓姝簡錛岄┈涓婇噴鏀劇郴緇熻祫婧愩傜▼搴忓憳搴旇鏍規嵁鑷繁鐨勯渶瑕侊紝閫夋嫨閫傚綋鐨勫垎紱葷姸鎬併傝緗嚎紼嬪垎紱葷姸鎬佺殑鍑芥暟涓簆thread_attr_setdetachstate錛坧thread_attr_t *attr, int detachstate錛夈傜浜屼釜鍙傛暟鍙変負PTHREAD_CREATE_DETACHED錛堝垎紱葷嚎紼嬶級鍜?PTHREAD _CREATE_JOINABLE錛堥潪鍒嗙綰跨▼錛夈傝繖閲岃娉ㄦ剰鐨勪竴鐐規槸錛屽鏋滆緗竴涓嚎紼嬩負鍒嗙綰跨▼錛岃岃繖涓嚎紼嬭繍琛屽張闈炲父蹇紝瀹冨緢鍙兘鍦╬thread_create鍑芥暟榪斿洖涔嬪墠灝辯粓姝簡錛屽畠緇堟浠ュ悗灝卞彲鑳藉皢綰跨▼鍙峰拰緋葷粺璧勬簮縐諱氦緇欏叾浠栫殑綰跨▼浣跨敤錛岃繖鏍瘋皟鐢╬thread_create鐨勭嚎紼嬪氨寰楀埌浜嗛敊璇殑綰跨▼鍙楓傝閬垮厤榪欑鎯呭喌鍙互閲囧彇涓瀹氱殑鍚屾鎺柦錛屾渶綆鍗曠殑鏂規硶涔嬩竴鏄彲浠ュ湪琚垱寤虹殑綰跨▼閲岃皟鐢╬thread_cond_timewait鍑芥暟錛岃榪欎釜綰跨▼絳夊緟涓浼氬効錛岀暀鍑鴻凍澶熺殑鏃墮棿璁╁嚱鏁皃thread_create榪斿洖銆傝緗竴孌電瓑寰呮椂闂達紝鏄湪澶氱嚎紼嬬紪紼嬮噷甯哥敤鐨勬柟娉曘備絾鏄敞鎰忎笉瑕佷嬌鐢ㄨ濡倃ait錛堬級涔嬬被鐨勫嚱鏁幫紝瀹冧滑鏄嬌鏁翠釜榪涚▼鐫$湢錛屽茍涓嶈兘瑙e喅綰跨▼鍚屾鐨勯棶棰樸?br>銆銆鍙﹀涓涓彲鑳藉父鐢ㄧ殑灞炴ф槸綰跨▼鐨勪紭鍏堢駭錛屽畠瀛樻斁鍦ㄧ粨鏋剆ched_param涓傜敤鍑芥暟pthread_attr_getschedparam鍜屽嚱鏁皃thread_attr_setschedparam榪涜瀛樻斁錛屼竴鑸鏉ワ紝鎴戜滑鎬繪槸鍏堝彇浼樺厛綰э紝瀵瑰彇寰楃殑鍊間慨鏀瑰悗鍐嶅瓨鏀懼洖鍘匯備笅闈㈠嵆鏄竴孌電畝鍗曠殑渚嬪瓙銆?br>#include <pthread.h><br>#include <sched.h><br>pthread_attr_t attr;<br>pthread_t tid;<br>sched_param param;<br>int newprio=20;</p> <p style="COLOR: #000000">pthread_attr_init(&attr);<br>pthread_attr_getschedparam(&attr, &param);<br>param.sched_priority=newprio;<br>pthread_attr_setschedparam(&attr, &param);<br>pthread_create(&tid, &attr, (void *)myfunction, myarg);<br>銆銆<br>4 綰跨▼鐨勬暟鎹鐞?br>銆銆鍜岃繘紼嬬浉姣旓紝綰跨▼鐨勬渶澶т紭鐐逛箣涓鏄暟鎹殑鍏變韓鎬э紝鍚勪釜榪涚▼鍏變韓鐖惰繘紼嬪娌胯鐨勬暟鎹錛屽彲浠ユ柟渚跨殑鑾峰緱銆佷慨鏀規暟鎹備絾榪欎篃緇欏綰跨▼緙栫▼甯︽潵浜嗚澶氶棶棰樸傛垜浠繀欏誨綋蹇冩湁澶氫釜涓嶅悓鐨勮繘紼嬭闂浉鍚岀殑鍙橀噺銆傝澶氬嚱鏁版槸涓嶅彲閲嶅叆鐨勶紝鍗沖悓鏃朵笉鑳借繍琛屼竴涓嚱鏁扮殑澶氫釜鎷瘋礉錛堥櫎闈炰嬌鐢ㄤ笉鍚岀殑鏁版嵁孌碉級銆傚湪鍑芥暟涓0鏄庣殑闈欐佸彉閲忓父甯稿甫鏉ラ棶棰橈紝鍑芥暟鐨勮繑鍥炲間篃浼氭湁闂銆傚洜涓哄鏋滆繑鍥炵殑鏄嚱鏁板唴閮ㄩ潤鎬佸0鏄庣殑絀洪棿鐨勫湴鍧錛屽垯鍦ㄤ竴涓嚎紼嬭皟鐢ㄨ鍑芥暟寰楀埌鍦板潃鍚庝嬌鐢ㄨ鍦板潃鎸囧悜鐨勬暟鎹椂錛屽埆鐨勭嚎紼嬪彲鑳借皟鐢ㄦ鍑芥暟騫朵慨鏀逛簡榪欎竴孌墊暟鎹傚湪榪涚▼涓叡浜殑鍙橀噺蹇呴』鐢ㄥ叧閿瓧volatile鏉ュ畾涔夛紝榪欐槸涓轟簡闃叉緙栬瘧鍣ㄥ湪浼樺寲鏃訛紙濡俫cc涓嬌鐢?OX鍙傛暟錛夋敼鍙樺畠浠殑浣跨敤鏂瑰紡銆備負浜嗕繚鎶ゅ彉閲忥紝鎴戜滑蹇呴』浣跨敤淇″彿閲忋佷簰鏂ョ瓑鏂規硶鏉ヤ繚璇佹垜浠鍙橀噺鐨勬紜嬌鐢ㄣ備笅闈紝鎴戜滑灝遍愭浠嬬粛澶勭悊綰跨▼鏁版嵁鏃剁殑鏈夊叧鐭ヨ瘑銆?/p> <p style="COLOR: #000000">4.1 綰跨▼鏁版嵁<br>銆銆鍦ㄥ崟綰跨▼鐨勭▼搴忛噷錛屾湁涓ょ鍩烘湰鐨勬暟鎹細鍏ㄥ眬鍙橀噺鍜屽眬閮ㄥ彉閲忋備絾鍦ㄥ綰跨▼紼嬪簭閲岋紝榪樻湁絎笁縐嶆暟鎹被鍨嬶細綰跨▼鏁版嵁錛圱SD: Thread-Specific Data錛夈傚畠鍜屽叏灞鍙橀噺寰堣薄錛屽湪綰跨▼鍐呴儴錛屽悇涓嚱鏁板彲浠ヨ薄浣跨敤鍏ㄥ眬鍙橀噺涓鏍瘋皟鐢ㄥ畠錛屼絾瀹冨綰跨▼澶栭儴鐨勫叾瀹冪嚎紼嬫槸涓嶅彲瑙佺殑銆傝繖縐嶆暟鎹殑蹇呰鎬ф槸鏄捐屾槗瑙佺殑銆備緥濡傛垜浠父瑙佺殑鍙橀噺errno錛屽畠榪斿洖鏍囧噯鐨勫嚭閿欎俊鎭傚畠鏄劇劧涓嶈兘鏄竴涓眬閮ㄥ彉閲忥紝鍑犱箮姣忎釜鍑芥暟閮藉簲璇ュ彲浠ヨ皟鐢ㄥ畠錛涗絾瀹冨張涓嶈兘鏄竴涓叏灞鍙橀噺錛屽惁鍒欏湪A綰跨▼閲岃緭鍑虹殑寰堝彲鑳芥槸B綰跨▼鐨勫嚭閿欎俊鎭傝瀹炵幇璇稿姝ょ被鐨勫彉閲忥紝鎴戜滑灝卞繀欏諱嬌鐢ㄧ嚎紼嬫暟鎹傛垜浠負姣忎釜綰跨▼鏁版嵁鍒涘緩涓涓敭錛屽畠鍜岃繖涓敭鐩稿叧鑱旓紝鍦ㄥ悇涓嚎紼嬮噷錛岄兘浣跨敤榪欎釜閿潵鎸囦唬綰跨▼鏁版嵁錛屼絾鍦ㄤ笉鍚岀殑綰跨▼閲岋紝榪欎釜閿唬琛ㄧ殑鏁版嵁鏄笉鍚岀殑錛屽湪鍚屼竴涓嚎紼嬮噷錛屽畠浠h〃鍚屾牱鐨勬暟鎹唴瀹廣?br>銆銆鍜岀嚎紼嬫暟鎹浉鍏崇殑鍑芥暟涓昏鏈?涓細鍒涘緩涓涓敭錛涗負涓涓敭鎸囧畾綰跨▼鏁版嵁錛涗粠涓涓敭璇誨彇綰跨▼鏁版嵁錛涘垹闄ら敭銆?br>銆銆鍒涘緩閿殑鍑芥暟鍘熷瀷涓猴細<br>銆銆extern int pthread_key_create __P ((pthread_key_t *__key,<br>銆銆void (*__destr_function) (void *)));<br>銆銆絎竴涓弬鏁頒負鎸囧悜涓涓敭鍊肩殑鎸囬拡錛岀浜屼釜鍙傛暟鎸囨槑浜嗕竴涓猟estructor鍑芥暟錛屽鏋滆繖涓弬鏁頒笉涓虹┖錛岄偅涔堝綋姣忎釜綰跨▼緇撴潫鏃訛紝緋葷粺灝嗚皟鐢ㄨ繖涓嚱鏁版潵閲婃斁緇戝畾鍦ㄨ繖涓敭涓婄殑鍐呭瓨鍧椼傝繖涓嚱鏁板父鍜屽嚱鏁皃thread_once ((pthread_once_t*once_control, void (*initroutine) (void)))涓璧蜂嬌鐢紝涓轟簡璁╄繖涓敭鍙鍒涘緩涓嬈°傚嚱鏁皃thread_once澹版槑涓涓垵濮嬪寲鍑芥暟錛岀涓嬈¤皟鐢╬thread_once鏃跺畠鎵ц榪欎釜鍑芥暟錛屼互鍚庣殑璋冪敤灝嗚瀹冨拷鐣ャ?br><br>銆銆鍦ㄤ笅闈㈢殑渚嬪瓙涓紝鎴戜滑鍒涘緩涓涓敭錛屽茍灝嗗畠鍜屾煇涓暟鎹浉鍏寵仈銆傛垜浠瀹氫箟涓涓嚱鏁癱reateWindow錛岃繖涓嚱鏁板畾涔変竴涓浘褰㈢獥鍙o紙鏁版嵁綾誨瀷涓篎l_Window *錛岃繖鏄浘褰㈢晫闈㈠紑鍙戝伐鍏稦LTK涓殑鏁版嵁綾誨瀷錛夈傜敱浜庡悇涓嚎紼嬮兘浼氳皟鐢ㄨ繖涓嚱鏁幫紝鎵浠ユ垜浠嬌鐢ㄧ嚎紼嬫暟鎹?br>/* 澹版槑涓涓敭*/<br>pthread_key_t myWinKey;<br>/* 鍑芥暟 createWindow */<br>void createWindow ( void ) {<br>Fl_Window * win;<br>static pthread_once_t once= PTHREAD_ONCE_INIT;<br>/* 璋冪敤鍑芥暟createMyKey錛屽垱寤洪敭*/<br>pthread_once ( & once, createMyKey) ;<br>/*win鎸囧悜涓涓柊寤虹珛鐨勭獥鍙?/<br>win=new Fl_Window( 0, 0, 100, 100, "MyWindow");<br>/* 瀵規紿楀彛浣滀竴浜涘彲鑳界殑璁劇疆宸ヤ綔錛屽澶у皬銆佷綅緗佸悕縐扮瓑*/<br>setWindow(win);<br>/* 灝嗙獥鍙f寚閽堝肩粦瀹氬湪閿甿yWinKey涓?/<br>pthread_setpecific ( myWinKey, win);<br>}</p> <p style="COLOR: #000000">/* 鍑芥暟 createMyKey錛屽垱寤轟竴涓敭錛屽茍鎸囧畾浜哾estructor */<br>void createMyKey ( void ) {<br>pthread_keycreate(&myWinKey, freeWinKey);<br>}</p> <p style="COLOR: #000000">/* 鍑芥暟 freeWinKey錛岄噴鏀劇┖闂?/<br>void freeWinKey ( Fl_Window * win){<br>delete win;<br>}</p> <p style="COLOR: #000000">銆銆榪欐牱錛屽湪涓嶅悓鐨勭嚎紼嬩腑璋冪敤鍑芥暟createMyWin錛岄兘鍙互寰楀埌鍦ㄧ嚎紼嬪唴閮ㄥ潎鍙鐨勭獥鍙e彉閲忥紝榪欎釜鍙橀噺閫氳繃鍑芥暟pthread_getspecific寰楀埌銆傚湪涓婇潰鐨勪緥瀛愪腑錛屾垜浠凡緇忎嬌鐢ㄤ簡鍑芥暟pthread_setspecific鏉ュ皢綰跨▼鏁版嵁鍜屼竴涓敭緇戝畾鍦ㄤ竴璧楓傝繖涓や釜鍑芥暟鐨勫師鍨嬪涓嬶細<br>銆銆extern int pthread_setspecific __P ((pthread_key_t __key,__const void *__pointer));<br>銆銆extern void *pthread_getspecific __P ((pthread_key_t __key));<br>銆銆榪欎袱涓嚱鏁扮殑鍙傛暟鎰忎箟鍜屼嬌鐢ㄦ柟娉曟槸鏄捐屾槗瑙佺殑銆傝娉ㄦ剰鐨勬槸錛岀敤pthread_setspecific涓轟竴涓敭鎸囧畾鏂扮殑綰跨▼鏁版嵁鏃訛紝蹇呴』鑷繁閲婃斁鍘熸湁鐨勭嚎紼嬫暟鎹互鍥炴敹絀洪棿銆傝繖涓繃紼嬪嚱鏁皃thread_key_delete鐢ㄦ潵鍒犻櫎涓涓敭錛岃繖涓敭鍗犵敤鐨勫唴瀛樺皢琚噴鏀撅紝浣嗗悓鏍瘋娉ㄦ剰鐨勬槸錛屽畠鍙噴鏀鵑敭鍗犵敤鐨勫唴瀛橈紝騫朵笉閲婃斁璇ラ敭鍏寵仈鐨勭嚎紼嬫暟鎹墍鍗犵敤鐨勫唴瀛樿祫婧愶紝鑰屼笖瀹冧篃涓嶄細瑙﹀彂鍑芥暟pthread_key_create涓畾涔夌殑destructor鍑芥暟銆傜嚎紼嬫暟鎹殑閲婃斁蹇呴』鍦ㄩ噴鏀鵑敭涔嬪墠瀹屾垚銆?/p> <p style="COLOR: #000000">4.2 浜掓枼閿?br>銆銆浜掓枼閿佺敤鏉ヤ繚璇佷竴孌墊椂闂村唴鍙湁涓涓嚎紼嬪湪鎵ц涓孌典唬鐮併傚繀瑕佹ф樉鑰屾槗瑙侊細鍋囪鍚勪釜綰跨▼鍚戝悓涓涓枃浠墮『搴忓啓鍏ユ暟鎹紝鏈鍚庡緱鍒扮殑緇撴灉涓瀹氭槸鐏鵑毦鎬х殑銆?br>銆銆鎴戜滑鍏堢湅涓嬮潰涓孌典唬鐮併傝繖鏄竴涓/鍐欑▼搴忥紝瀹冧滑鍏敤涓涓紦鍐插尯錛屽茍涓旀垜浠亣瀹氫竴涓紦鍐插尯鍙兘淇濆瓨涓鏉′俊鎭傚嵆緙撳啿鍖哄彧鏈変袱涓姸鎬侊細鏈変俊鎭垨娌℃湁淇℃伅銆?/p> <p style="COLOR: #000000">void reader_function ( void );<br>void writer_function ( void ); </p> <p style="COLOR: #000000">char buffer;<br>int buffer_has_item=0;<br>pthread_mutex_t mutex;<br>struct timespec delay;<br>void main ( void ){<br>pthread_t reader;<br>/* 瀹氫箟寤惰繜鏃墮棿*/<br>delay.tv_sec = 2;<br>delay.tv_nec = 0;<br>/* 鐢ㄩ粯璁ゅ睘鎬у垵濮嬪寲涓涓簰鏂ラ攣瀵硅薄*/<br>pthread_mutex_init (&mutex,NULL);<br>pthread_create(&reader, pthread_attr_default, (void *)&reader_function), NULL);<br>writer_function( );<br>}</p> <p style="COLOR: #000000">void writer_function (void){<br>while(1){<br>/* 閿佸畾浜掓枼閿?/<br>pthread_mutex_lock (&mutex);<br>if (buffer_has_item==0){<br>buffer=make_new_item( );<br>buffer_has_item=1;<br>}<br>/* 鎵撳紑浜掓枼閿?/<br>pthread_mutex_unlock(&mutex);<br>pthread_delay_np(&delay);<br>}<br>}</p> <p style="COLOR: #000000">void reader_function(void){<br>while(1){<br>pthread_mutex_lock(&mutex);<br>if(buffer_has_item==1){<br>consume_item(buffer);<br>buffer_has_item=0;<br>}<br>pthread_mutex_unlock(&mutex);<br>pthread_delay_np(&delay);<br>}<br>}<br>銆銆榪欓噷澹版槑浜嗕簰鏂ラ攣鍙橀噺mutex錛岀粨鏋刾thread_mutex_t涓轟笉鍏紑鐨勬暟鎹被鍨嬶紝鍏朵腑鍖呭惈涓涓郴緇熷垎閰嶇殑灞炴у璞°傚嚱鏁皃thread_mutex_init鐢ㄦ潵鐢熸垚涓涓簰鏂ラ攣銆侼ULL鍙傛暟琛ㄦ槑浣跨敤榛樿灞炴с傚鏋滈渶瑕佸0鏄庣壒瀹氬睘鎬х殑浜掓枼閿侊紝欏昏皟鐢ㄥ嚱鏁皃thread_mutexattr_init銆傚嚱鏁皃thread_mutexattr_setpshared鍜屽嚱鏁皃thread_mutexattr_settype鐢ㄦ潵璁劇疆浜掓枼閿佸睘鎬с傚墠涓涓嚱鏁拌緗睘鎬shared錛屽畠鏈変袱涓彇鍊鹼紝PTHREAD_PROCESS_PRIVATE鍜孭THREAD_PROCESS_SHARED銆傚墠鑰呯敤鏉ヤ笉鍚岃繘紼嬩腑鐨勭嚎紼嬪悓姝ワ紝鍚庤呯敤浜庡悓姝ユ湰榪涚▼鐨勪笉鍚岀嚎紼嬨傚湪涓婇潰鐨勪緥瀛愪腑錛屾垜浠嬌鐢ㄧ殑鏄粯璁ゅ睘鎬THREAD_PROCESS_ PRIVATE銆傚悗鑰呯敤鏉ヨ緗簰鏂ラ攣綾誨瀷錛屽彲閫夌殑綾誨瀷鏈塒THREAD_MUTEX_NORMAL銆丳THREAD_MUTEX_ERRORCHECK銆丳THREAD_MUTEX_RECURSIVE鍜孭THREAD _MUTEX_DEFAULT銆傚畠浠垎鍒畾涔変簡涓嶅悓鐨勪笂鎵銆佽В閿佹満鍒訛紝涓鑸儏鍐典笅錛岄夌敤鏈鍚庝竴涓粯璁ゅ睘鎬с?br>銆銆pthread_mutex_lock澹版槑寮濮嬬敤浜掓枼閿佷笂閿侊紝姝ゅ悗鐨勪唬鐮佺洿鑷寵皟鐢╬thread_mutex_unlock涓烘錛屽潎琚笂閿侊紝鍗沖悓涓鏃墮棿鍙兘琚竴涓嚎紼嬭皟鐢ㄦ墽琛屻傚綋涓涓嚎紼嬫墽琛屽埌pthread_mutex_lock澶勬椂錛屽鏋滆閿佹鏃惰鍙︿竴涓嚎紼嬩嬌鐢紝閭f綰跨▼琚樆濉烇紝鍗崇▼搴忓皢絳夊緟鍒板彟涓涓嚎紼嬮噴鏀炬浜掓枼閿併傚湪涓婇潰鐨勪緥瀛愪腑錛屾垜浠嬌鐢ㄤ簡pthread_delay_np鍑芥暟錛岃綰跨▼鐫$湢涓孌墊椂闂達紝灝辨槸涓轟簡闃叉涓涓嚎紼嬪緇堝崰鎹鍑芥暟銆?br>銆銆涓婇潰鐨勪緥瀛愰潪甯哥畝鍗曪紝灝變笉鍐嶄粙緇嶄簡錛岄渶瑕佹彁鍑虹殑鏄湪浣跨敤浜掓枼閿佺殑榪囩▼涓緢鏈夊彲鑳戒細鍑虹幇姝婚攣錛氫袱涓嚎紼嬭瘯鍥懼悓鏃跺崰鐢ㄤ袱涓祫婧愶紝騫舵寜涓嶅悓鐨勬搴忛攣瀹氱浉搴旂殑浜掓枼閿侊紝渚嬪涓や釜綰跨▼閮介渶瑕侀攣瀹氫簰鏂ラ攣1鍜屼簰鏂ラ攣2錛宎綰跨▼鍏堥攣瀹氫簰鏂ラ攣1錛宐綰跨▼鍏堥攣瀹氫簰鏂ラ攣2錛岃繖鏃跺氨鍑虹幇浜嗘閿併傛鏃舵垜浠彲浠ヤ嬌鐢ㄥ嚱鏁皃thread_mutex_trylock錛屽畠鏄嚱鏁皃thread_mutex_lock鐨勯潪闃誨鐗堟湰錛屽綋瀹冨彂鐜版閿佷笉鍙伩鍏嶆椂錛屽畠浼氳繑鍥炵浉搴旂殑淇℃伅錛岀▼搴忓憳鍙互閽堝姝婚攣鍋氬嚭鐩稿簲鐨勫鐞嗐傚彟澶栦笉鍚岀殑浜掓枼閿佺被鍨嬪姝婚攣鐨勫鐞嗕笉涓鏍鳳紝浣嗘渶涓昏鐨勮繕鏄紼嬪簭鍛樿嚜宸卞湪紼嬪簭璁捐娉ㄦ剰榪欎竴鐐廣?/p> <p style="COLOR: #000000">4.3 鏉′歡鍙橀噺<br>銆銆鍓嶄竴鑺備腑鎴戜滑璁茶堪浜嗗浣曚嬌鐢ㄤ簰鏂ラ攣鏉ュ疄鐜扮嚎紼嬮棿鏁版嵁鐨勫叡浜拰閫氫俊錛屼簰鏂ラ攣涓涓槑鏄劇殑緙虹偣鏄畠鍙湁涓ょ鐘舵侊細閿佸畾鍜岄潪閿佸畾銆傝屾潯浠跺彉閲忛氳繃鍏佽綰跨▼闃誨鍜岀瓑寰呭彟涓涓嚎紼嬪彂閫佷俊鍙風殑鏂規硶寮ヨˉ浜嗕簰鏂ラ攣鐨勪笉瓚籌紝瀹冨父鍜屼簰鏂ラ攣涓璧蜂嬌鐢ㄣ備嬌鐢ㄦ椂錛屾潯浠跺彉閲忚鐢ㄦ潵闃誨涓涓嚎紼嬶紝褰撴潯浠朵笉婊¤凍鏃訛紝綰跨▼寰寰瑙e紑鐩稿簲鐨勪簰鏂ラ攣騫剁瓑寰呮潯浠跺彂鐢熷彉鍖栥備竴鏃﹀叾瀹冪殑鏌愪釜綰跨▼鏀瑰彉浜嗘潯浠跺彉閲忥紝瀹冨皢閫氱煡鐩稿簲鐨勬潯浠跺彉閲忓敜閱掍竴涓垨澶氫釜姝h姝ゆ潯浠跺彉閲忛樆濉炵殑綰跨▼銆傝繖浜涚嚎紼嬪皢閲嶆柊閿佸畾浜掓枼閿佸茍閲嶆柊嫻嬭瘯鏉′歡鏄惁婊¤凍銆備竴鑸鏉ワ紝鏉′歡鍙橀噺琚敤鏉ヨ繘琛岀嚎鎵塊棿鐨勫悓姝ャ?br>銆銆鏉′歡鍙橀噺鐨勭粨鏋勪負pthread_cond_t錛屽嚱鏁皃thread_cond_init錛堬級琚敤鏉ュ垵濮嬪寲涓涓潯浠跺彉閲忋傚畠鐨勫師鍨嬩負錛?br>銆銆extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthread_condattr_t *__cond_attr));<br>銆銆鍏朵腑cond鏄竴涓寚鍚戠粨鏋刾thread_cond_t鐨勬寚閽堬紝cond_attr鏄竴涓寚鍚戠粨鏋刾thread_condattr_t鐨勬寚閽堛傜粨鏋刾thread_condattr_t鏄潯浠跺彉閲忕殑灞炴х粨鏋勶紝鍜屼簰鏂ラ攣涓鏍鋒垜浠彲浠ョ敤瀹冩潵璁劇疆鏉′歡鍙橀噺鏄繘紼嬪唴鍙敤榪樻槸榪涚▼闂村彲鐢紝榛樿鍊兼槸PTHREAD_ PROCESS_PRIVATE錛屽嵆姝ゆ潯浠跺彉閲忚鍚屼竴榪涚▼鍐呯殑鍚勪釜綰跨▼浣跨敤銆傛敞鎰忓垵濮嬪寲鏉′歡鍙橀噺鍙湁鏈浣跨敤鏃舵墠鑳介噸鏂板垵濮嬪寲鎴栬閲婃斁銆傞噴鏀句竴涓潯浠跺彉閲忕殑鍑芥暟涓簆thread_cond_ destroy錛坧thread_cond_t cond錛夈傘<br>銆銆鍑芥暟pthread_cond_wait錛堬級浣跨嚎紼嬮樆濉炲湪涓涓潯浠跺彉閲忎笂銆傚畠鐨勫嚱鏁板師鍨嬩負錛?br>銆銆extern int pthread_cond_wait __P ((pthread_cond_t *__cond,<br>銆銆pthread_mutex_t *__mutex));<br>銆銆綰跨▼瑙e紑mutex鎸囧悜鐨勯攣騫惰鏉′歡鍙橀噺cond闃誨銆傜嚎紼嬪彲浠ヨ鍑芥暟pthread_cond_signal鍜屽嚱鏁皃thread_cond_broadcast鍞ら啋錛屼絾鏄娉ㄦ剰鐨勬槸錛屾潯浠跺彉閲忓彧鏄搗闃誨鍜屽敜閱掔嚎紼嬬殑浣滅敤錛屽叿浣撶殑鍒ゆ柇鏉′歡榪橀渶鐢ㄦ埛緇欏嚭錛屼緥濡備竴涓彉閲忔槸鍚︿負0絳夌瓑錛岃繖涓鐐規垜浠粠鍚庨潰鐨勪緥瀛愪腑鍙互鐪嬪埌銆傜嚎紼嬭鍞ら啋鍚庯紝瀹冨皢閲嶆柊媯鏌ュ垽鏂潯浠舵槸鍚︽弧瓚籌紝濡傛灉榪樹笉婊¤凍錛屼竴鑸鏉ョ嚎紼嬪簲璇ヤ粛闃誨鍦ㄨ繖閲岋紝琚瓑寰呰涓嬩竴嬈″敜閱掋傝繖涓繃紼嬩竴鑸敤while璇彞瀹炵幇銆?br>銆銆鍙︿竴涓敤鏉ラ樆濉炵嚎紼嬬殑鍑芥暟鏄痯thread_cond_timedwait錛堬級錛屽畠鐨勫師鍨嬩負錛?br>銆銆extern int pthread_cond_timedwait __P ((pthread_cond_t *__cond,<br>銆銆pthread_mutex_t *__mutex, __const struct timespec *__abstime));<br>銆銆瀹冩瘮鍑芥暟pthread_cond_wait錛堬級澶氫簡涓涓椂闂村弬鏁幫紝緇忓巻abstime孌墊椂闂村悗錛屽嵆浣挎潯浠跺彉閲忎笉婊¤凍錛岄樆濉炰篃琚В闄ゃ?br>銆銆鍑芥暟pthread_cond_signal錛堬級鐨勫師鍨嬩負錛?br>銆銆extern int pthread_cond_signal __P ((pthread_cond_t *__cond));<br>銆銆瀹冪敤鏉ラ噴鏀捐闃誨鍦ㄦ潯浠跺彉閲廲ond涓婄殑涓涓嚎紼嬨傚涓嚎紼嬮樆濉炲湪姝ゆ潯浠跺彉閲忎笂鏃訛紝鍝竴涓嚎紼嬭鍞ら啋鏄敱綰跨▼鐨勮皟搴︾瓥鐣ユ墍鍐沖畾鐨勩傝娉ㄦ剰鐨勬槸錛屽繀欏葷敤淇濇姢鏉′歡鍙橀噺鐨勪簰鏂ラ攣鏉ヤ繚鎶よ繖涓嚱鏁幫紝鍚﹀垯鏉′歡婊¤凍淇″彿鍙堝彲鑳藉湪嫻嬭瘯鏉′歡鍜岃皟鐢╬thread_cond_wait鍑芥暟涔嬮棿琚彂鍑猴紝浠庤岄犳垚鏃犻檺鍒剁殑絳夊緟銆備笅闈㈡槸浣跨敤鍑芥暟pthread_cond_wait錛堬級鍜屽嚱鏁皃thread_cond_signal錛堬級鐨勪竴涓畝鍗曠殑渚嬪瓙銆?/p> <p style="COLOR: #000000">pthread_mutex_t count_lock;<br>pthread_cond_t count_nonzero;<br>unsigned count;<br>decrement_count銆() {<br>pthread_mutex_lock (&count_lock);<br>while(count==0) <br>pthread_cond_wait( &count_nonzero, &count_lock);<br>count=count -1;<br>pthread_mutex_unlock (&count_lock);<br>}<br><br>increment_count(){<br>pthread_mutex_lock(&count_lock);<br>if(count==0)<br>pthread_cond_signal(&count_nonzero);<br>count=count+1;<br>pthread_mutex_unlock(&count_lock);<br>}<br>銆銆count鍊間負0鏃訛紝decrement鍑芥暟鍦╬thread_cond_wait澶勮闃誨錛屽茍鎵撳紑浜掓枼閿乧ount_lock銆傛鏃訛紝褰撹皟鐢ㄥ埌鍑芥暟increment_count鏃訛紝pthread_cond_signal錛堬級鍑芥暟鏀瑰彉鏉′歡鍙橀噺錛屽憡鐭ecrement_count錛堬級鍋滄闃誨銆傝鑰呭彲浠ヨ瘯鐫璁╀袱涓嚎紼嬪垎鍒繍琛岃繖涓や釜鍑芥暟錛岀湅鐪嬩細鍑虹幇浠涔堟牱鐨勭粨鏋溿?br>銆銆鍑芥暟pthread_cond_broadcast錛坧thread_cond_t *cond錛夌敤鏉ュ敜閱掓墍鏈夎闃誨鍦ㄦ潯浠跺彉閲廲ond涓婄殑綰跨▼銆傝繖浜涚嚎紼嬭鍞ら啋鍚庡皢鍐嶆绔炰簤鐩稿簲鐨勪簰鏂ラ攣錛屾墍浠ュ繀欏誨皬蹇冧嬌鐢ㄨ繖涓嚱鏁般?/p> <p style="COLOR: #000000">4.4 淇″彿閲?br>銆銆淇″彿閲忔湰璐ㄤ笂鏄竴涓潪璐熺殑鏁存暟璁℃暟鍣紝瀹冭鐢ㄦ潵鎺у埗瀵瑰叕鍏辮祫婧愮殑璁塊棶銆傚綋鍏叡璧勬簮澧炲姞鏃訛紝璋冪敤鍑芥暟sem_post錛堬級澧炲姞淇″彿閲忋傚彧鏈夊綋淇″彿閲忓煎ぇ浜庯紣鏃訛紝鎵嶈兘浣跨敤鍏叡璧勬簮錛屼嬌鐢ㄥ悗錛屽嚱鏁皊em_wait錛堬級鍑忓皯淇″彿閲忋傚嚱鏁皊em_trywait錛堬級鍜屽嚱鏁皃thread_ mutex_trylock錛堬級璧峰悓鏍風殑浣滅敤錛屽畠鏄嚱鏁皊em_wait錛堬級鐨勯潪闃誨鐗堟湰銆備笅闈㈡垜浠愪釜浠嬬粛鍜屼俊鍙烽噺鏈夊叧鐨勪竴浜涘嚱鏁幫紝瀹冧滑閮藉湪澶存枃浠?usr/include/semaphore.h涓畾涔夈?br>銆銆淇″彿閲忕殑鏁版嵁綾誨瀷涓虹粨鏋剆em_t錛屽畠鏈川涓婃槸涓涓暱鏁村瀷鐨勬暟銆傚嚱鏁皊em_init錛堬級鐢ㄦ潵鍒濆鍖栦竴涓俊鍙烽噺銆傚畠鐨勫師鍨嬩負錛?br>銆銆extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));<br>銆銆sem涓烘寚鍚戜俊鍙烽噺緇撴瀯鐨勪竴涓寚閽堬紱pshared涓嶄負錛愭椂姝や俊鍙烽噺鍦ㄨ繘紼嬮棿鍏變韓錛屽惁鍒欏彧鑳戒負褰撳墠榪涚▼鐨勬墍鏈夌嚎紼嬪叡浜紱value緇欏嚭浜嗕俊鍙烽噺鐨勫垵濮嬪箋?br>銆銆鍑芥暟sem_post( sem_t *sem )鐢ㄦ潵澧炲姞淇″彿閲忕殑鍊箋傚綋鏈夌嚎紼嬮樆濉炲湪榪欎釜淇″彿閲忎笂鏃訛紝璋冪敤榪欎釜鍑芥暟浼氫嬌鍏朵腑鐨勪竴涓嚎紼嬩笉鍦ㄩ樆濉烇紝閫夋嫨鏈哄埗鍚屾牱鏄敱綰跨▼鐨勮皟搴︾瓥鐣ュ喅瀹氱殑銆?br>銆銆鍑芥暟sem_wait( sem_t *sem )琚敤鏉ラ樆濉炲綋鍓嶇嚎紼嬬洿鍒頒俊鍙烽噺sem鐨勫煎ぇ浜?錛岃В闄ら樆濉炲悗灝唖em鐨勫煎噺涓錛岃〃鏄庡叕鍏辮祫婧愮粡浣跨敤鍚庡噺灝戙傚嚱鏁皊em_trywait ( sem_t *sem )鏄嚱鏁皊em_wait錛堬級鐨勯潪闃誨鐗堟湰錛屽畠鐩存帴灝嗕俊鍙烽噺sem鐨勫煎噺涓銆?br>銆銆鍑芥暟sem_destroy(sem_t *sem)鐢ㄦ潵閲婃斁淇″彿閲弒em銆?br>銆銆涓嬮潰鎴戜滑鏉ョ湅涓涓嬌鐢ㄤ俊鍙烽噺鐨勪緥瀛愩傚湪榪欎釜渚嬪瓙涓紝涓鍏辨湁4涓嚎紼嬶紝鍏朵腑涓や釜綰跨▼璐熻矗浠庢枃浠惰鍙栨暟鎹埌鍏叡鐨勭紦鍐插尯錛屽彟涓や釜綰跨▼浠庣紦鍐插尯璇誨彇鏁版嵁浣滀笉鍚岀殑澶勭悊錛堝姞鍜屼箻榪愮畻錛夈?br>/* File sem.c */<br>#include <stdio.h><br>#include <pthread.h><br>#include <semaphore.h><br>#define MAXSTACK 100<br>int stack[MAXSTACK][2];<br>int size=0;<br>sem_t sem;<br>/* 浠庢枃浠?.dat璇誨彇鏁版嵁錛屾瘡璇諱竴嬈★紝淇″彿閲忓姞涓*/<br>void ReadData1(void){<br>FILE *fp=fopen("1.dat","r");<br>while(!feof(fp)){<br>fscanf(fp,"%d %d",&stack[size][0],&stack[size][1]);<br>sem_post(&sem);<br>++size;<br>}<br>fclose(fp);<br>}<br>/*浠庢枃浠?.dat璇誨彇鏁版嵁*/<br>void ReadData2(void){<br>FILE *fp=fopen("2.dat","r");<br>while(!feof(fp)){<br>fscanf(fp,"%d %d",&stack[size][0],&stack[size][1]);<br>sem_post(&sem);<br>++size;<br>}<br>fclose(fp);<br>}<br>/*闃誨絳夊緟緙撳啿鍖烘湁鏁版嵁錛岃鍙栨暟鎹悗錛岄噴鏀劇┖闂達紝緇х畫絳夊緟*/<br>void HandleData1(void){<br>while(1){<br>sem_wait(&sem);<br>printf("Plus:%d+%d=%d\n",stack[size][0],stack[size][1],<br>stack[size][0]+stack[size][1]);<br>--size;<br>}<br>}</p> <p style="COLOR: #000000">void HandleData2(void){<br>while(1){<br>sem_wait(&sem);<br>printf("Multiply:%d*%d=%d\n",stack[size][0],stack[size][1],<br>stack[size][0]*stack[size][1]);<br>--size;<br>}<br>}<br>int main(void){<br>pthread_t t1,t2,t3,t4;<br>sem_init(&sem,0,0);<br>pthread_create(&t1,NULL,(void *)HandleData1,NULL);<br>pthread_create(&t2,NULL,(void *)HandleData2,NULL);<br>pthread_create(&t3,NULL,(void *)ReadData1,NULL);<br>pthread_create(&t4,NULL,(void *)ReadData2,NULL);<br>/* 闃叉紼嬪簭榪囨棭閫鍑猴紝璁╁畠鍦ㄦ鏃犻檺鏈熺瓑寰?/<br>pthread_join(t1,NULL);<br>}</p> <p style="COLOR: #000000">銆銆鍦↙inux涓嬶紝鎴戜滑鐢ㄥ懡浠cc -lpthread sem.c -o sem鐢熸垚鍙墽琛屾枃浠秙em銆?鎴戜滑浜嬪厛緙栬緫濂芥暟鎹枃浠?.dat鍜?.dat錛屽亣璁懼畠浠殑鍐呭鍒嗗埆涓? 2 3 4 5 6 7 8 9 10鍜?-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 錛屾垜浠繍琛宻em錛屽緱鍒板涓嬬殑緇撴灉錛?br>Multiply:-1*-2=2<br>Plus:-1+-2=-3<br>Multiply:9*10=90<br>Plus:-9+-10=-19<br>Multiply:-7*-8=56<br>Plus:-5+-6=-11<br>Multiply:-3*-4=12<br>Plus:9+10=19<br>Plus:7+8=15<br>Plus:5+6=11<br><br>銆銆浠庝腑鎴戜滑鍙互鐪嬪嚭鍚勪釜綰跨▼闂寸殑绔炰簤鍏崇郴銆傝屾暟鍊煎茍鏈寜鎴戜滑鍘熷厛鐨勯『搴忔樉紺哄嚭鏉ヨ繖鏄敱浜巗ize榪欎釜鏁板艱鍚勪釜綰跨▼浠繪剰淇敼鐨勭紭鏁呫傝繖涔熷線寰鏄綰跨▼緙栫▼瑕佹敞鎰忕殑闂銆?/p> <p style="COLOR: #000000">5 灝忕粨<br>銆銆澶氱嚎紼嬬紪紼嬫槸涓涓緢鏈夋剰鎬濅篃寰堟湁鐢ㄧ殑鎶鏈紝浣跨敤澶氱嚎紼嬫妧鏈殑緗戠粶铓傝殎鏄洰鍓嶆渶甯哥敤鐨勪笅杞藉伐鍏蜂箣涓錛屼嬌鐢ㄥ綰跨▼鎶鏈殑grep姣斿崟綰跨▼鐨刧rep瑕佸揩涓婂嚑鍊嶏紝綾諱技鐨勪緥瀛愯繕鏈夊緢澶氥傚笇鏈涘ぇ瀹惰兘鐢ㄥ綰跨▼鎶鏈啓鍑洪珮鏁堝疄鐢ㄧ殑濂界▼搴忔潵銆?/p> <!--html_end--><br> <img src ="http://www.shnenglu.com/yehao/aggbug/144908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yehao/" target="_blank">鍘氱Н钖勫彂</a> 2011-04-24 18:47 <a href="http://www.shnenglu.com/yehao/articles/144908.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://www25sds.com" target="_blank">欧美大片在线观看一区二区</a>| <a href="http://timonna.com" target="_blank">亚洲伊人第一页</a>| <a href="http://788111c.com" target="_blank">久久免费视频这里只有精品</a>| <a href="http://4480vv.com" target="_blank">黑人巨大精品欧美一区二区小视频</a>| <a href="http://analemi.com" target="_blank">久久www成人_看片免费不卡</a>| <a href="http://eshop999.com" target="_blank">欧美在线看片</a>| <a href="http://vipaiqiyi.com" target="_blank">亚洲二区三区四区</a>| <a href="http://436212.com" target="_blank">亚洲日本理论电影</a>| <a href="http://xianjiacf.com" target="_blank">国产精品xxxav免费视频</a>| <a href="http://www40255.com" target="_blank">亚洲欧美视频在线观看</a>| <a href="http://3233328.com" target="_blank">久久大香伊蕉在人线观看热2</a>| <a href="http://域名" target="_blank">1769国产精品</a>| <a href="http://1323123.com" target="_blank">亚洲精选中文字幕</a>| <a href="http://wwww999.com" target="_blank">国产一区91</a>| <a href="http://844985.com" target="_blank">亚洲国产精品久久91精品</a>| <a href="http://vod3366.com" target="_blank">欧美午夜剧场</a>| <a href="http://www-116036.com" target="_blank">久久综合免费视频影院</a>| <a href="http://ssss96.com" target="_blank">欧美乱人伦中文字幕在线</a>| <a href="http://6055365.com" target="_blank">亚洲一区二区av电影</a>| <a href="http://857sds.com" target="_blank">久久成人国产精品</a>| <a href="http://yunduaner.com" target="_blank">亚洲美女电影在线</a>| <a href="http://www123hao.com" target="_blank">亚洲激情国产</a>| <a href="http://syfeichi.com" target="_blank">性欧美激情精品</a>| <a href="http://julong-ads.com" target="_blank">久久精品天堂</a>| <a href="http://91pinping.com" target="_blank">9久草视频在线视频精品</a>| <a href="http://hznaja.com" target="_blank">亚洲一二三四久久</a>| <a href="http://haochen072.com" target="_blank">亚洲大片一区二区三区</a>| <a href="http://cnlbogs.com" target="_blank">一级日韩一区在线观看</a>| <a href="http://yeyelu888.com" target="_blank">亚洲高清123</a>| <a href="http://1332233.com" target="_blank">亚洲影院污污.</a>| <a href="http://25axxa.com" target="_blank">99精品免费</a>| <a href="http://133686.com" target="_blank">久久九九电影</a>| <a href="http://335848.com" target="_blank">亚洲欧美日韩精品一区二区</a>| <a href="http://tianxiantxtv.com" target="_blank">久久久久久**毛片大全</a>| <a href="http://tonglijinshu.com" target="_blank">亚洲一区二区三区四区五区午夜</a>| <a href="http://137177.com" target="_blank">久久久久国内</a>| <a href="http://hnspygxjscyfwzx.com" target="_blank">午夜精品理论片</a>| <a href="http://http456446.com" target="_blank">欧美韩日高清</a>| <a href="http://301110.com" target="_blank">欧美电影在线观看</a>| <a href="http://wltaste.com" target="_blank">国产欧美一区二区视频</a>| <a href="http://rainbowbpm.com" target="_blank">亚洲精品中文字幕女同</a>| <a href="http://www18889.com" target="_blank">亚洲韩国青草视频</a>| <a href="http://yujiaosanye.com" target="_blank">性久久久久久久久久久久</a>| <a href="http://cqrehoo.com" target="_blank">亚洲一区在线直播</a>| <a href="http://jiarenlady.com" target="_blank">欧美激情视频在线播放 </a>| <a href="http://by5130.com" target="_blank">麻豆成人在线观看</a>| <a href="http://227c7.com" target="_blank">午夜精品久久久久久久久久久久久</a>| <a href="http://ruichengxiang.com" target="_blank">久久精品一本久久99精品</a>| <a href="http://chuangke168.com" target="_blank">亚洲特级片在线</a>| <a href="http://budanbao.com" target="_blank">你懂的视频一区二区</a>| <a href="http://hhbz518.com" target="_blank">久久蜜桃av一区精品变态类天堂</a>| <a href="http://99cheats.com" target="_blank">欧美色大人视频</a>| <a href="http://hernameplz.com" target="_blank">91久久精品国产91久久性色tv</a>| <a href="http://xiphosoft.com" target="_blank">国产亚洲视频在线</a>| <a href="http://wanshunpu.com" target="_blank">亚洲一区二区三区在线看</a>| <a href="http://xvideoav99.com" target="_blank">久久精品导航</a>| <a href="http://changjiucf.com" target="_blank">亚洲黑丝在线</a>| <a href="http://avicpharm.com" target="_blank">亚洲一区二区三区中文字幕</a>| <a href="http://133969.com" target="_blank">狠狠色综合色综合网络</a>| <a href="http://373336.com" target="_blank">国产人久久人人人人爽</a>| <a href="http://707377c.com" target="_blank">国产精品视频xxx</a>| <a href="http://ca88tv.com" target="_blank">国产精品爱久久久久久久</a>| <a href="http://www-438686.com" target="_blank">欧美高清在线播放</a>| <a href="http://proenhub.com" target="_blank">欧美成人dvd在线视频</a>| <a href="http://www-55655.com" target="_blank">久久一综合视频</a>| <a href="http://feiniao168.com" target="_blank">欧美亚洲综合网</a>| <a href="http://www284tv.com" target="_blank">欧美在线free</a>| <a href="http://777777hd.com" target="_blank">欧美一级播放</a>| <a href="http://478884.com" target="_blank">久久九九国产精品怡红院</a>| <a href="http://k91cm.com" target="_blank">久久精品国产免费观看</a>| <a href="http://4430x.com" target="_blank">久久精品亚洲精品</a>| <a href="http://www-13413.com" target="_blank">国产精品wwwwww</a>| <a href="http://540669.com" target="_blank">欧美日韩亚洲国产精品</a>| <a href="http://y4088.com" target="_blank">欧美激情亚洲国产</a>| <a href="http://jzsp94.com" target="_blank">91久久精品美女高潮</a>| <a href="http://essuee.com" target="_blank">久久久久久久久久看片</a>| <a href="http://uniconmgt.com" target="_blank">国产欧美日韩一区二区三区在线</a>| <a href="http://yc0989.com" target="_blank">亚洲欧美电影院</a>| <a href="http://621939.com" target="_blank">久久福利精品</a>| <a href="http://yc7878.com" target="_blank">韩国一区二区在线观看</a>| <a href="http://sinojinxing.com" target="_blank">久久国产精品久久精品国产</a>| <a href="http://569688.com" target="_blank">免费欧美在线视频</a>| <a href="http://3333577.com" target="_blank">亚洲全部视频</a>| <a href="http://77427xyz.com" target="_blank">国产精品久久久久久久久久久久久久 </a>| <a href="http://amass-ic.com" target="_blank">久久久999国产</a>| <a href="http://668www.com" target="_blank">欧美成人免费大片</a>| <a href="http://aqd1t.com" target="_blank">一本色道**综合亚洲精品蜜桃冫</a>| <a href="http://188267.com" target="_blank">欧美日本在线播放</a>| <a href="http://ll992.com" target="_blank">亚洲欧美国产日韩中文字幕</a>| <a href="http://qq6699.com" target="_blank">可以看av的网站久久看</a>| <a href="http://niceboybao.com" target="_blank">亚洲精品国产精品国自产在线</a>| <a href="http://1177898.com" target="_blank">欧美日韩免费区域视频在线观看</a>| <a href="http://9911444.com" target="_blank">亚洲综合激情</a>| <a href="http://niceboybao.com" target="_blank">欧美大片免费久久精品三p </a>| <a href="http://sh738.com" target="_blank">亚洲国产精品久久久久</a>| <a href="http://1000078.com" target="_blank">欧美成黄导航</a>| <a href="http://yys4.com" target="_blank">亚洲欧美日韩国产中文在线</a>| <a href="http://543199.com" target="_blank">美女露胸一区二区三区</a>| <a href="http://dahuxu.com" target="_blank">中国成人黄色视屏</a>| <a href="http://842332.com" target="_blank">国产一区二区三区在线免费观看 </a>| <a href="http://hmm47.com" target="_blank">男人的天堂亚洲在线</a>| <a href="http://saohu79.com" target="_blank">一本久久综合亚洲鲁鲁</a>| <a href="http://49028b.com" target="_blank">久久亚洲精品中文字幕冲田杏梨</a>| <a href="http://bjygp.com" target="_blank">99综合在线</a>| <a href="http://548710.com" target="_blank">狠狠色综合日日</a>| <a href="http://hg4958.com" target="_blank">国产精品久久久久久av福利软件</a>| <a href="http://8xn66w.com" target="_blank">久久久久久伊人</a>| <a href="http://sepapapa8888.com" target="_blank">制服丝袜亚洲播放</a>| <a href="http://22abb.com" target="_blank">奶水喷射视频一区</a>| <a href="http://91mdtv.com" target="_blank">欧美在线黄色</a>| <a href="http://99cheats.com" target="_blank">亚洲精品综合久久中文字幕</a>| <a href="http://kpd034.com" target="_blank">国产网站欧美日韩免费精品在线观看 </a>| <a href="http://phitris.com" target="_blank">亚洲影院色无极综合</a>| <a href="http://www520590.com" target="_blank">欧美高清在线</a>| <a href="http://www50050.com" target="_blank">欧美中文日韩</a>| <a href="http://51120guahao.com" target="_blank">99riav久久精品riav</a>| <a href="http://989p.com" target="_blank">伊人久久av导航</a>| <a href="http://6055365.com" target="_blank">国产精品亚发布</a>| <a href="http://qiezisp2.com" target="_blank">欧美精品成人在线</a>| <a href="http://haose23.com" target="_blank">葵司免费一区二区三区四区五区</a>| <a href="http://556626.com" target="_blank">亚洲天堂成人</a>| <a href="http://521mu.com" target="_blank">亚洲美女淫视频</a>| <a href="http://chufengguanye.com" target="_blank">欧美v国产在线一区二区三区</a>| <a href="http://qqszdq.com" target="_blank">欧美一区二区三区视频免费播放</a>| <a href="http://mgcc37.com" target="_blank">99热在这里有精品免费</a>| <a href="http://6767673.com" target="_blank">亚洲高清在线观看</a>| <a href="http://1000kongbao.com" target="_blank">国产亚洲激情</a>| <a href="http://kanebocos.com" target="_blank">国产精品资源在线观看</a>| <a href="http://xiuren2021.com" target="_blank">国产精品xxxav免费视频</a>| <a href="http://lzklpc.com" target="_blank">欧美黄色影院</a>| <a href="http://caopanjia.com" target="_blank">欧美ed2k</a>| <a href="http://7755mm.com" target="_blank">麻豆乱码国产一区二区三区</a>| <a href="http://1332233.com" target="_blank">久久国产精品一区二区三区四区</a>| <a href="http://ww323.com" target="_blank">亚洲摸下面视频</a>| <a href="http://9ctv2.com" target="_blank">亚洲美女av黄</a>| <a href="http://xaxkizlar.com" target="_blank">亚洲欧美日韩电影</a>| <a href="http://by21999.com" target="_blank">在线观看不卡av</a>| <a href="http://4430x.com" target="_blank">好看的日韩视频</a>| <a href="http://www1982t.com" target="_blank">狠狠色狠狠色综合日日tαg</a>| <a href="http://598327.com" target="_blank">国产日韩亚洲欧美</a>| <a href="http://389746.com" target="_blank">国产综合视频</a>| <a href="http://my8823.com" target="_blank">国产一区二区三区成人欧美日韩在线观看</a>| <a href="http://021-job.com" target="_blank">国产精品国产三级国产</a>| <a href="http://4915w.com" target="_blank">国产精品99一区二区</a>| <a href="http://580388.com" target="_blank">国产精品久久精品日日</a>| <a href="http://joy-learn.com" target="_blank">国产精品日韩欧美一区二区</a>| <a href="http://yy306.com" target="_blank">国产伦一区二区三区色一情</a>| <a href="http://yssnlp.com" target="_blank">国产精品中文字幕欧美</a>| <a href="http://707fx.com" target="_blank">国产一区二区日韩精品</a>| <a href="http://www5909.com" target="_blank">伊人色综合久久天天</a>| <a href="http://689658.com" target="_blank">激情欧美一区二区</a>| <a href="http://jiucao8.com" target="_blank">亚洲大片免费看</a>| <a href="http://432dm.com" target="_blank">一本一本久久a久久精品综合麻豆</a>| <a href="http://mytopvogue.com" target="_blank">99国内精品久久</a>| <a href="http://22127c.com" target="_blank">亚洲专区一区二区三区</a>| <a href="http://mmmm43.com" target="_blank">欧美一区二区三区免费观看</a>| <a href="http://287975.com" target="_blank">久久亚洲色图</a>| <a href="http://guanghezixun.com" target="_blank">欧美黑人在线观看</a>| <a href="http://cao3636.com" target="_blank">亚洲精品免费看</a>| <a href="http://wwwiqiuxia.com" target="_blank">正在播放亚洲一区</a>| <a href="http://asanny.com" target="_blank">久久av二区</a>| <a href="http://4080sy.com" target="_blank">欧美成人tv</a>| <a href="http://4bbbbb.com" target="_blank">国产精品一区久久</a>| <a href="http://8w82.com" target="_blank">激情久久久久久久久久久久久久久久</a>| <a href="http://98956888.com" target="_blank">136国产福利精品导航</a>| <a href="http://dsjgqc.com" target="_blank">亚洲精品少妇</a>| <a href="http://799868.com" target="_blank">午夜欧美大片免费观看</a>| <a href="http://jpqueyou.com" target="_blank">久久这里有精品15一区二区三区</a>| <a href="http://www-369111.com" target="_blank">免费高清在线一区</a>| <a href="http://737sihu.com" target="_blank">亚洲日本在线观看</a>| <a href="http://cabenn.com" target="_blank">午夜亚洲视频</a>| <a href="http://cpb-group.com" target="_blank">欧美激情91</a>| <a href="http://6u6uuu666.com" target="_blank">国产乱码精品一区二区三区五月婷</a>| <a href="http://ww245434.com" target="_blank">在线观看免费视频综合</a>| <a href="http://xxxyyy168.com" target="_blank">亚洲婷婷在线</a>| <a href="http://47b8.com" target="_blank">美国成人毛片</a>| <a href="http://22400com.com" target="_blank">亚洲天堂免费观看</a>| <a href="http://avse69.com" target="_blank">久久久免费精品视频</a>| <a href="http://ycgg008.com" target="_blank">欧美日韩日日夜夜</a>| <a href="http://sewuyueyue.com" target="_blank">国产一区二区三区久久久</a>| <a href="http://66636by.com" target="_blank">日韩一级在线</a>| <a href="http://041935.com" target="_blank">免费看成人av</a>| <a href="http://xingmaipet.com" target="_blank">亚洲小说欧美另类婷婷</a>| <a href="http://bauyu121.com" target="_blank">老鸭窝亚洲一区二区三区</a>| <a href="http://292q.com" target="_blank">国产精品久久婷婷六月丁香</a>| <a href="http://kk66mm.com" target="_blank">在线看不卡av</a>| <a href="http://580388.com" target="_blank">欧美亚洲一区三区</a>| <a href="http://dtwave-ind.com" target="_blank">亚洲国产二区</a>| <a href="http://2938423.com" target="_blank">欧美在线地址</a>| <a href="http://4388x3.com" target="_blank">国产精品久久国产精品99gif</a>| <a href="http://fcponteggi.com" target="_blank">永久免费精品影视网站</a>| <a href="http://mom8888.com" target="_blank">欧美一级淫片aaaaaaa视频</a>| <a href="http://xxtv123.com" target="_blank">欧美成人精品高清在线播放</a>| <a href="http://lexueit.com" target="_blank">亚洲午夜激情网页</a>| <a href="http://oksousou.com" target="_blank">欧美了一区在线观看</a>| <a href="http://4008166177.com" target="_blank">激情综合网址</a>| <a href="http://zyjdxx.com" target="_blank">久久精品中文字幕免费mv</a>| <a href="http://hsxinbao.com" target="_blank">一区二区高清视频</a>| <a href="http://5b6c.com" target="_blank">欧美日本在线视频</a>| <a href="http://199372.com" target="_blank">最新精品在线</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>