青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-145  評(píng)論-173  文章-70  trackbacks-0
前面的關(guān)于線程同步的兩種方法都有講解:

基于事件對(duì)象的:http://m.shnenglu.com/deercoder/archive/2010/02/09/107612.html
基于互斥量的:http://m.shnenglu.com/deercoder/archive/2010/02/09/107606.html

下面講解第三種方法:基于臨界區(qū)的方法:
代碼:

#include <windows.h>
#include 
<iostream>
using namespace std;

DWORD WINAPI Fun1Proc(LPVOID param);
DWORD WINAPI Fun2Proc(LPVOID param);

int time = 0;
CRITICAL_SECTION critical;

void main()
{
    HANDLE thread1,thread2;
    thread1 
= CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
    thread2 
= CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
    CloseHandle(thread1);
    CloseHandle(thread2);

    InitializeCriticalSection(
&critical);
    Sleep(
4000);
    DeleteCriticalSection(
&critical);
}


DWORD WINAPI Fun1Proc(LPVOID param)
{
    
while(1)
    
{
        EnterCriticalSection(
&critical);
        
if(time <= 20)
        
{
            Sleep(
1);
            cout 
<< "子線程1第" << time ++ << ""<< endl;
        }

        
else
            
break;
        LeaveCriticalSection(
&critical);
    }

    
return 0;
}


DWORD WINAPI Fun2Proc(LPVOID param)
{
    
while(1)
    
{
        EnterCriticalSection(
&critical);
        
if(time <= 20)
        
{
            Sleep(
1);
            cout 
<< "子線程2第" << time ++ << "" << endl;
        }

        
else
            
break;
        LeaveCriticalSection(
&critical);
    }

    
return 0;
}


實(shí)際上,這三種方法的實(shí)現(xiàn)都相同,只不過(guò),所使用的函數(shù)不同而已,這里對(duì)于臨界區(qū)的函數(shù),就是對(duì)應(yīng)的:
InitializeCriticalSection, DeleteCriticalSection, EnterCriticalSection, LeaveCriticalSection函數(shù)而已。

說(shuō)說(shuō)三者的區(qū)別吧:

基于互斥對(duì)象和事件對(duì)象的線程同步,屬于內(nèi)核對(duì)象,速度比較慢,不過(guò)可以在多個(gè)進(jìn)程中的各個(gè)線程之間同步。
基于離你家而且的線程同步,屬于用戶方式下的,速度比較快,但是容易進(jìn)入死鎖狀態(tài)!

這三種方法,都是可以實(shí)現(xiàn)Windows下面的線程同步,使得各個(gè)線程之間可以互通消息,實(shí)現(xiàn)交互式的訪問(wèn)。特別是對(duì)于共享資源的情況,必須要使用線程同步,否則會(huì)發(fā)生與時(shí)間有關(guān)的錯(cuò)誤,前面的帖子中,列舉出來(lái)的關(guān)于亂碼和競(jìng)爭(zhēng)的現(xiàn)象,輸出信息的雜亂,都是說(shuō)明了這一點(diǎn)。


在線程發(fā)生競(jìng)爭(zhēng)的時(shí)候,也需要使用線程同步,否則,一旦發(fā)生與時(shí)間有關(guān)的錯(cuò)誤,就會(huì)產(chǎn)生難以預(yù)料的BUG。對(duì)于實(shí)際編程的意義尤其重大!


在做完上面的這三種方法后,余下的就是基于信號(hào)量的,函數(shù)也不同,不再多說(shuō),如下:

#include <windows.h>
#include 
<iostream>
using namespace std;

DWORD WINAPI Fun1Proc(LPVOID param);
DWORD WINAPI Fun2Proc(LPVOID param);

int time = 0;
HANDLE sema;

void main()
{
    HANDLE thread1,thread2;
    thread1 
= CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
    thread2 
= CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
    CloseHandle(thread1);
    CloseHandle(thread2);

    sema 
= CreateSemaphore(NULL,1,1,NULL);
    Sleep(
4000);
}


DWORD WINAPI Fun1Proc(LPVOID param)
{
    
while(1)
    
{
        WaitForSingleObject(sema,INFINITE);
        
if(time <= 20)
        
{
            Sleep(
1);
            cout 
<< "子線程1第" << time ++ << ""<< endl;
        }

        
else
            
break;
        ReleaseSemaphore(sema,
1,NULL);
    }

    
return 0;
}


DWORD WINAPI Fun2Proc(LPVOID param)
{
    
while(1)
    
{
        WaitForSingleObject(sema,INFINITE);
        
if(time <= 20)
        
{
            Sleep(
1);
            cout 
<< "子線程2第" << time ++ << "" << endl;
        }

        
else
            
break;
        ReleaseSemaphore(sema,
1,NULL);
    }

    
return 0;
}
posted on 2010-02-09 19:15 deercoder 閱讀(3111) 評(píng)論(0)  編輯 收藏 引用

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本色道久久88综合亚洲精品ⅰ| 亚洲高清一二三区| 亚洲日本欧美天堂| 在线播放日韩| 在线观看福利一区| 亚洲国产精品久久久久婷婷884 | 国产精品免费观看视频| 欧美日韩国产欧美日美国产精品| 欧美区视频在线观看| 欧美激情中文字幕在线| 欧美体内she精视频| 国产精品入口夜色视频大尺度| 国产精品专区一| 国内精品视频666| 91久久国产综合久久蜜月精品| 亚洲欧洲日本mm| 中文在线一区| 久久精品视频在线免费观看| 欧美大片第1页| 亚洲夜间福利| 亚洲精品一区二区三区樱花| 夜久久久久久| 久久精品日韩一区二区三区| 亚洲国产精品黑人久久久| 日韩午夜在线视频| 午夜在线一区| 久久综合九色| 亚洲国内自拍| 一区二区高清视频| 久久久久久久久久码影片| 欧美日韩a区| 狠狠色综合日日| 中日韩午夜理伦电影免费| 久久久久国色av免费观看性色| 欧美黄色免费| 欧美一级在线播放| 欧美日韩亚洲一区二区三区四区| 国产一区91| 亚洲婷婷免费| 亚洲国产精品一区二区尤物区| 亚洲欧美日韩天堂| 欧美日韩国产区一| 亚洲黄色三级| 久久久久九九视频| 中文一区二区| 欧美激情综合| 91久久午夜| 久久久免费精品视频| 99这里只有久久精品视频| 久久深夜福利| 激情一区二区| 久久精品一区蜜桃臀影院| 中文一区字幕| 欧美日韩一级黄| 欧美午夜精品理论片a级大开眼界 欧美午夜精品理论片a级按摩 | 美女被久久久| 国产午夜亚洲精品羞羞网站 | 亚洲一级一区| 欧美午夜在线一二页| 999在线观看精品免费不卡网站| 久久综合国产精品| 欧美一区二区在线观看| 国产精品一区三区| 亚洲欧美日韩一区二区在线 | 欧美激情2020午夜免费观看| 亚洲国产精品www| 麻豆av一区二区三区久久| 欧美一区二区三区精品 | 久久成人这里只有精品| 国产精品美女久久久| 99国产一区| 亚洲黄色有码视频| 免费精品视频| 亚洲人成网站999久久久综合| 欧美激情国产高清| 欧美国产精品人人做人人爱| 日韩午夜精品视频| 亚洲伦理在线观看| 国产精品久久久久久久久久尿| 亚洲性色视频| 午夜精品久久久久久久99热浪潮 | 久久精品国产精品| 久久精品日产第一区二区| 影音先锋日韩资源| 亚洲国产精品免费| 欧美性事在线| 亚洲亚洲精品在线观看| 欧美精品久久天天躁| 9人人澡人人爽人人精品| 亚洲精品国产视频| 亚洲国产婷婷综合在线精品 | 亚洲国产欧美日韩精品| 亚洲一区二区三区乱码aⅴ| 国产精品久久久久久久久婷婷| 新67194成人永久网站| 欧美承认网站| 欧美成人资源网| 午夜精品视频| 午夜精品久久久久久久99热浪潮 | 欧美在线啊v一区| 国产欧美一区二区三区沐欲| 你懂的成人av| 欧美三区在线观看| 亚洲一区精品电影| 国产日韩精品一区二区三区| 欧美一区二区在线视频| 欧美激情1区| 一区二区三区在线看| 欧美高清在线视频| 国产精品v片在线观看不卡 | 亚洲黄色一区| 欧美一区二区大片| 亚洲美女视频在线免费观看| 亚洲欧洲免费视频| 国产精品一区二区在线观看| 欧美在线亚洲在线| 久久一区视频| 久久www成人_看片免费不卡| 国产精品毛片| 欧美国产欧美综合| 国产三级欧美三级| 亚洲欧洲一区二区三区在线观看| 国产精品一国产精品k频道56| 亚洲第一福利社区| 国产一区二区三区高清| 正在播放亚洲| 久久亚洲春色中文字幕久久久| 亚洲精选中文字幕| 欧美一区二区在线| 亚洲午夜羞羞片| 女人天堂亚洲aⅴ在线观看| 久久福利精品| 国产精品入口尤物| 日韩视频中文| 在线一区观看| 欧美精品电影| 99国产精品国产精品久久| 欧美一区二区三区视频免费| 亚洲永久视频| 欧美涩涩网站| 亚洲精品在线视频观看| 日韩视频免费观看| 葵司免费一区二区三区四区五区| 久久久综合网站| 激情国产一区| 久久久免费精品视频| 欧美激情精品久久久久久| 亚洲国产经典视频| 欧美成人精品不卡视频在线观看| 欧美成人高清视频| 亚洲美女黄色片| 欧美日韩在线看| 亚洲免费婷婷| 久久婷婷影院| 亚洲第一色在线| 亚洲最新视频在线| 欧美一区二区三区在线| 久久综合国产精品| 午夜精品一区二区三区在线播放 | 欧美久久一级| 亚洲欧洲日韩在线| 亚洲少妇诱惑| 国产视频不卡| 久久久999精品免费| 欧美高清视频免费观看| 亚洲国产一区二区视频| 欧美专区在线观看| 欧美大尺度在线观看| 亚洲激情中文1区| 欧美成人午夜激情在线| 亚洲福利精品| 免费欧美在线视频| 亚洲手机在线| 香蕉亚洲视频| 国产尤物精品| 欧美激情综合亚洲一二区| 91久久精品www人人做人人爽| 最新成人av网站| 欧美日本韩国一区| 午夜精品久久久久久久| 欧美中文字幕在线| 狠狠色2019综合网| 狂野欧美激情性xxxx| 亚洲一区二区三区中文字幕 | 性欧美18~19sex高清播放| 性伦欧美刺激片在线观看| 在线看欧美视频| 欧美激情bt| 一区二区精品在线观看| 亚洲欧美怡红院| 亚洲黄一区二区| 欧美日韩国产不卡| 亚洲欧美日韩精品在线| 久久乐国产精品| 午夜电影亚洲| 亚洲国产另类 国产精品国产免费| 欧美国产视频日韩| 99亚洲一区二区| 亚洲第一福利在线观看| 国产视频丨精品|在线观看|