亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usingthreads.html

?? SDL學習教程。超好。 SDL學習教程。超好
?? HTML
字號:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<title>使用SDL:線程</title>
</head>

<body bgcolor="#FFF8DC" text="#000000">
<TABLE>
<TR><!--#include file="../menu.tmpl" -->
<TD>

<p align="center">
[<a href="usingcdrom.html">前一頁</a>]     
<a href="toc.html"><font color="#8B0000">目錄</font> </a>
[<a href="usingtimers.html">下一頁</a>]
</p>

<h1><font color="#8B0000">使用SDL</font></h1>

<h2>線程</h2>

<table border="0" cellpadding="4">
    <tr>
        <td valign="top"><ul>
            <li><strong>創建簡單的線程</strong></li> 
        </ul>
        <blockquote>
            <p>把一個函數作為SDL_CreateThread()的參數就可以創建一個線程。如果調用成功,該函數就   
            開始并行運行了,使用自己的棧、寄存器等上下文(context),并能象程序其他部分一樣訪問內存和文件句柄。
	 </p>
        </blockquote>
        </td>
        <td valign="top" width="200" bgcolor="#D3D3D3"><strong>提示:</strong><br>
        SDL_CreateThread()的第二個參數將被傳遞給新線程。你可以傳入一個放在棧上的值,也可以傳入一個供線程使用的數據指針。</td> 
    </tr>
</table>

<table border="0" cellpadding="50">
    <tr>
        <td valign="top"><font color="#000080"><strong>例程:</strong></font><pre>
<font color="#0000FF">#include</font> &quot;<font color="#000000">SDL_thread.h</font>&quot;

<font color="#008000">int</font> global_data = 0;

<font color="#008000">int</font> thread_func(<font
color="#008000">void *</font>unused)
{
    <font color="#008000">int</font> last_value = 0;

    <font color="#0000FF">while</font> ( global_data != -1 ) {
        <font color="#0000FF">if</font> ( global_data != last_value ) {
            printf(&quot;數據改變為<font color="#000000"> %d\n</font>&quot;, global_data);
            last_value = global_data;
        }
        SDL_Delay(100);
    }
    printf(&quot;<font color="#000000">線程退出</font><font color="#000000">\n</font>&quot;);
    <font color="#0000FF">return</font>(0);
}

{
    SDL_Thread *thread;
    <font color="#008000">int</font> i;

    thread = SDL_CreateThread(thread_func, NULL);
    <font color="#0000FF">if</font> ( thread == NULL ) {
        fprintf(stderr, &quot;<font color="#000000">無法創建線程</font><font color="#000000">: %s\n</font>&quot;, SDL_GetError());
        return;
    }

    <font color="#0000FF">for</font> ( i=0; i&lt;5; ++i ) {
        printf(&quot;<font color="#000000">更改數據為</font><font color="#000000"> %d\n</font>&quot;, i);
        global_data = i;
        SDL_Delay(1000);
    }

    printf(&quot;<font color="#000000">通知線程退出</font><font color="#000000">\n</font>&quot;);
    global_data = -1;
    SDL_WaitThread(thread, NULL);
}
</pre>
        </td>
    </tr>
</table>

<table border="0" cellpadding="4">
    <tr>
        <td valign="top"><ul>
            <li><strong>對資源訪問進行同步  </strong></li>
        </ul>
        <blockquote>
            <p>通過創建互斥體(mutex),并將資源用lock 
            (SDL_mutexP())和unlock (SDL_mutexV())保護起來,就可以防止多個線程同時訪問該資源。</p> 
        </blockquote>
        </td>
        <td valign="top" width="200" bgcolor="#D3D3D3"><strong>提示:</strong><br>
        任何可能會被多個線程訪問的數據都應該用mutex保護起來。</td>
    </tr>
</table>

<table border="0" cellpadding="50">
    <tr>
        <td valign="top"><font color="#000080"><strong>例程:</strong></font><pre>
<font color="#0000FF">#include</font> &quot;<font color="#000000">SDL_thread.h</font>&quot;
<font color="#0000FF">#include</font> &quot;<font color="#000000">SDL_mutex.h</font>&quot;

<font color="#008000">int</font> potty = 0;
<font color="#008000">int</font> gotta_go;

<font color="#008000">int</font> thread_func(<font
color="#008000">void *</font>data)
{
    SDL_mutex *lock = (SDL_mutex *)data;
    <font color="#008000">int</font> times_went;

    times_went = 0;
    <font color="#0000FF">while</font> ( gotta_go ) {
        SDL_mutexP(lock);    <font color="#FF0000">/* 鎖住potty */</font>
        ++potty;
        printf(&quot;<font color="#000000">線程</font><font color="#000000">%d 正在使用potty\n</font>&quot;, SDL_ThreadID());
        <font color="#0000FF">if</font> ( potty &gt; 1 ) {
            printf(&quot;<font color="#000000">哦</font><font color="#000000">,有人在用potty!\n</font>&quot;);
        }
        --potty;
        SDL_mutexV(lock);
        ++times_went;
    }
    printf(&quot;好了<font color="#000000">\n</font>&quot;);
    <font color="#0000FF">return</font>(times_went);
}

{
    <font color="#0000FF">const</font> <font color="#008000">int</font> progeny = 5;
    SDL_Thread *kids[progeny];
    SDL_mutex  *lock;
    <font color="#008000">int</font> i, lots;

    <font color="#FF0000">/* 創建同步鎖 */</font>
    lock = SDL_CreateMutex();

    gotta_go = 1;
    <font color="#0000FF">for</font> ( i=0; i&lt;progeny; ++i ) {
        kids[i] = SDL_CreateThread(thread_func, lock);
    }

    SDL_Delay(5*1000);
    SDL_mutexP(lock);
    printf(&quot;<font color="#000000">都完成了嗎?\n</font>&quot;);
    gotta_go = 0;
    SDL_mutexV(lock);

    <font color="#0000FF">for</font> ( i=0; i&lt;progeny; ++i ) {
        SDL_WaitThread(kids[i], &amp;lots);
        printf(&quot;<font color="#000000">線程</font><font color="#000000"> %d 用過potty %d 次了\n</font>&quot;, i+1, lots);
    }
    SDL_DestroyMutex(lock);
}
</pre>
        </td>
    </tr>
</table>

<p align="center">
[<a href="usingcdrom.html">前一頁</a>] 
<a href="toc.html"><font color="#8B0000">目錄</font> </a>
[<a href="usingtimers.html">后一頁</a>]
</p>

</TABLE>
</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文在线观看| 91麻豆文化传媒在线观看| 3atv一区二区三区| 日韩av在线播放中文字幕| 这里只有精品免费| 国产在线播放一区三区四| 国产欧美日本一区视频| 91美女视频网站| 免费观看在线综合色| 中文字幕乱码一区二区免费| 在线精品视频小说1| 黄页网站大全一区二区| 亚洲特级片在线| 日韩欧美视频一区| 91老师片黄在线观看| 久久国产视频网| 亚洲欧美激情小说另类| 日韩一二三区视频| 91丨九色丨蝌蚪富婆spa| 美洲天堂一区二卡三卡四卡视频 | 色呦呦网站一区| 石原莉奈在线亚洲三区| 国产日产欧美一区| 欧美一区二区视频免费观看| 成人午夜av影视| 日本在线播放一区二区三区| 亚洲视频在线一区观看| 久久色.com| 777精品伊人久久久久大香线蕉| 国产成人av一区二区三区在线 | 一区二区三区在线视频播放 | 91视频www| 国产成人精品三级| 久久99国内精品| 五月婷婷色综合| 一区二区在线看| 日本一区二区综合亚洲| 精品免费日韩av| 日韩欧美成人午夜| 69p69国产精品| 欧美猛男gaygay网站| 91亚洲国产成人精品一区二三| 国模一区二区三区白浆| 久久精品999| 久久超碰97人人做人人爱| 日韩精品久久理论片| 亚洲观看高清完整版在线观看| 成人免费视频在线观看| 日韩一区日韩二区| 国产精品视频线看| 中文字幕一区三区| 欧美国产精品中文字幕| 国产区在线观看成人精品| 亚洲精品一区二区三区影院 | 一区二区三区 在线观看视频| 亚洲国产成人一区二区三区| 国产亲近乱来精品视频| 欧美精品一区男女天堂| 26uuu色噜噜精品一区二区| 亚洲精品在线电影| 国产精品免费久久久久| 中文字幕亚洲在| 洋洋成人永久网站入口| 亚洲成人在线免费| 青青草97国产精品免费观看| 日韩av一区二区在线影视| 狠狠色综合日日| 成人激情视频网站| 91久久久免费一区二区| 欧美精品 国产精品| 精品国产凹凸成av人网站| 国产精品三级久久久久三级| 亚洲免费av观看| 日韩av网站在线观看| 国产激情视频一区二区在线观看| 成人一区二区视频| 91精品91久久久中77777| 日韩一区二区视频| 国产精品女同一区二区三区| 亚洲综合激情另类小说区| 久久精品免费观看| 99久久综合99久久综合网站| 欧美精品一二三区| 久久久久久久电影| 亚洲成精国产精品女| 精品一区二区在线看| 97aⅴ精品视频一二三区| 91精品婷婷国产综合久久性色 | av在线不卡免费看| 91精品国产综合久久久久久久久久 | 91精品国产综合久久福利软件| 精品日产卡一卡二卡麻豆| 亚洲欧洲中文日韩久久av乱码| 日本91福利区| 91官网在线免费观看| 精品国产三级电影在线观看| 一区二区在线看| 国产精一区二区三区| 欧美精品三级在线观看| 亚洲人成小说网站色在线| 国产一区二区三区黄视频| 欧美日韩精品是欧美日韩精品| 久久久精品免费网站| 日本三级韩国三级欧美三级| 一本到一区二区三区| 国产丝袜美腿一区二区三区| 日产欧产美韩系列久久99| 91黄色激情网站| 国产精品免费网站在线观看| 国产一区二区三区香蕉| 91精品国产91久久久久久一区二区| 椎名由奈av一区二区三区| 国产91精品一区二区麻豆网站| 91麻豆精品国产无毒不卡在线观看 | 视频一区二区三区中文字幕| av电影在线观看完整版一区二区| 欧美精品一区二区久久婷婷| 天天色综合天天| 91国产精品成人| 亚洲精品成人少妇| 99久久久国产精品免费蜜臀| 国产精品国产成人国产三级| 高清在线观看日韩| 久久嫩草精品久久久精品| 激情五月婷婷综合| 精品美女被调教视频大全网站| 亚洲午夜精品17c| 欧美日韩精品一区二区三区四区| 午夜久久福利影院| 337p亚洲精品色噜噜| 日韩国产欧美视频| 91精品国产一区二区三区蜜臀 | 成人黄色国产精品网站大全在线免费观看 | 欧美a级理论片| 欧美一区二区三区成人| 日韩av一二三| 欧美精品一区二区在线观看| 国产精品一区二区三区网站| 国产色婷婷亚洲99精品小说| 99久久er热在这里只有精品15| 国产精品久久久久久久裸模| 97国产精品videossex| 洋洋av久久久久久久一区| 欧美乱妇15p| 国产一区二区在线免费观看| 国产校园另类小说区| 91影视在线播放| 午夜视频在线观看一区| 日韩久久精品一区| 成人视屏免费看| 亚洲图片欧美视频| 日韩欧美国产1| 丁香六月综合激情| 亚洲一区在线观看免费| 制服丝袜在线91| 成人精品视频一区二区三区尤物| 亚洲精品国产一区二区精华液| 欧美日韩另类国产亚洲欧美一级| 国产原创一区二区三区| 亚洲免费观看高清完整版在线观看熊| 9191国产精品| 99久久精品国产观看| 秋霞电影网一区二区| 国产精品免费aⅴ片在线观看| 91国产精品成人| 国产在线精品视频| 午夜精品久久久久久久99樱桃| 精品免费视频一区二区| 色88888久久久久久影院野外| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美国产一区二区| 日韩一区二区精品在线观看| 99riav一区二区三区| 经典三级在线一区| 亚洲第一综合色| 亚洲视频在线一区二区| wwwwxxxxx欧美| 91精品在线免费观看| 色综合咪咪久久| 国产69精品久久久久777| 日韩精品三区四区| 亚洲综合清纯丝袜自拍| 国产精品视频一二三区| 久久久久久9999| 欧美大片日本大片免费观看| 91久久精品国产91性色tv| 国产成人高清在线| 精品亚洲porn| 免费在线观看视频一区| 亚洲高清免费观看高清完整版在线观看| 久久久精品黄色| 久久综合色播五月| 欧美一级片在线看| 欧美午夜一区二区| 91理论电影在线观看| 成人中文字幕合集| 大胆欧美人体老妇| 韩日av一区二区| 久久精品国产**网站演员| 久久国产精品露脸对白|