線程

線程管理

線程創(chuàng)建

#include <stdio.h>
#include <windows.h>


DWORD WINAPI ThreadProc(LPVOID lpParam)
{
    int i=0;
    
    while(i<20)
    {
        printf("I am form a thread,count= %d \n",i++);
    }
    return 0;
}


int main(int argc,char* argv[])
{
    HANDLE hThread;  
    DWORD dwThreadId;


    hThread = ::CreateThread(NULL,NULL,ThreadProc,NULL,0,&dwThreadId);
    printf("Id = %d \n",dwThreadId);

    ::WaitForSingleObject(hThread,INFINITE);        //等待線程結(jié)束
    ::CloseHandle(hThread);                     //關(guān)閉句柄

    return 0;
}

優(yōu)先級(jí)管理

線程之間存在優(yōu)先級(jí)問(wèn)題,如下解決

#include <windows.h>
#include <stdio.h>

DWORD WINAPI ThreadIdle(LPVOID lpParam)
{
    int i=0;
    while(i++<10)
        printf("Idle Thread runing \n");

    return 0;
}

DWORD WINAPI ThreadNormal(LPVOID lpParam)
{
    int i=0;
    while(i++ < 10)
        printf("Normal Thread runing \n");

    return 0;
}

int main(int argc,char* argv[])
{
    DWORD dwThreadId;
    HANDLE h[2];

    h[0]=::CreateThread(NULL,0,ThreadIdle,NULL,CREATE_SUSPENDED,&dwThreadId);   //暫停態(tài)線程
    ::SetThreadPriority(h[0],THREAD_PRIORITY_IDLE);         //優(yōu)先級(jí)(空閑)
    ::ResumeThread(h[0]);

    h[1]=::CreateThread(NULL,0,ThreadNormal,NULL,0,&dwThreadId);    //默認(rèn)的Normal

    ::WaitForMultipleObjects(2,h,TRUE,INFINITE);        //等待多線程結(jié)束


    ::CloseHandle(h[0]);
    ::CloseHandle(h[1]);

    return 0;
}

線程同步

多個(gè)線程同時(shí)訪問(wèn)一段數(shù)據(jù),會(huì)產(chǎn)生奇怪的問(wèn)題,由此引入臨界區(qū)
可把注釋部分刪除觀察現(xiàn)象

#include <windows.h>
#include <stdio.h>
#include <process.h>

int g_nCount1=0;
int g_nCount2=0;

BOOL g_bContinue=TRUE;
CRITICAL_SECTION g_cs;

UINT _stdcall ThreadFunc(LPVOID);

int main(int argc,char* argv[])
{
    UINT uId;
    HANDLE h[2];

    ::InitializeCriticalSection(&g_cs); //臨界區(qū)聲明

    h[0]=(HANDLE)::_beginthreadex(NULL,0,ThreadFunc,NULL,0,&uId);
    h[1]=(HANDLE)::_beginthreadex(NULL,0,ThreadFunc,NULL,0,&uId);
    
    Sleep(1000);
    g_bContinue=FALSE;

    ::WaitForMultipleObjects(2,h,TRUE,INFINITE);



    ::CloseHandle(h[1]);
    ::CloseHandle(h[2]);
    ::DeleteCriticalSection(&g_cs);     刪除臨界區(qū)

    printf("gCount1= %d\n",g_nCount1);
    printf("gCount2= %d\n",g_nCount2);

    return 0;
}

UINT _stdcall ThreadFunc(LPVOID)
{
    while(g_bContinue)
    {
        ::EnterCriticalSection(&g_cs);      //進(jìn)入臨界區(qū)
        g_nCount1++;
        g_nCount2++;
        ::LeaveCriticalSection(&g_cs);      //離開(kāi)臨界區(qū)
    }

    return 0;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末亏吝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子盒使,更是在濱河造成了極大的恐慌桃移,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)墓陈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)第献,“玉大人贡必,你說(shuō)我怎么就攤上這事∮购粒” “怎么了仔拟?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)飒赃。 經(jīng)常有香客問(wèn)我利花,道長(zhǎng),這世上最難降的妖魔是什么载佳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任炒事,我火速辦了婚禮,結(jié)果婚禮上蔫慧,老公的妹妹穿的比我還像新娘挠乳。我一直安慰自己,他們只是感情好姑躲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布睡扬。 她就那樣靜靜地躺著,像睡著了一般黍析。 火紅的嫁衣襯著肌膚如雪卖怜。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天阐枣,我揣著相機(jī)與錄音韧涨,去河邊找鬼。 笑死侮繁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的如孝。 我是一名探鬼主播宪哩,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼第晰!你這毒婦竟也來(lái)了锁孟?” 一聲冷哼從身側(cè)響起彬祖,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎品抽,沒(méi)想到半個(gè)月后储笑,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圆恤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年突倍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盆昙。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡羽历,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淡喜,到底是詐尸還是另有隱情秕磷,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布炼团,位于F島的核電站澎嚣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏瘟芝。R本人自食惡果不足惜易桃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望模狭。 院中可真熱鬧颈抚,春花似錦、人聲如沸嚼鹉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锚赤。三九已至匹舞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間线脚,已是汗流浹背赐稽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浑侥,地道東北人姊舵。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寓落,于是被迫代替她去往敵國(guó)和親括丁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Java-Review-Note——4.多線程 標(biāo)簽: JavaStudy PS:本來(lái)是分開(kāi)三篇的伶选,后來(lái)想想還是整...
    coder_pig閱讀 1,650評(píng)論 2 17
  • 又來(lái)到了一個(gè)老生常談的問(wèn)題史飞,應(yīng)用層軟件開(kāi)發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢尖昏? 今天就這個(gè)問(wèn)題開(kāi)始,來(lái)談?wù)劜?..
    tangsl閱讀 4,127評(píng)論 0 23
  • Z 你畫(huà)的是什么构资? 基地 后面是什么抽诉? 戰(zhàn)場(chǎng)。 送給Q時(shí)Q說(shuō)(背面)我還以為是倒過(guò)來(lái)看呢吐绵,有點(diǎn)像火山迹淌,這兩邊的黃色...
    蕙心紈質(zhì)閱讀 103評(píng)論 0 0
  • 想要做好產(chǎn)品,給用戶好的產(chǎn)品體驗(yàn)拦赠,必須先跳出產(chǎn)品的定義巍沙。很多人會(huì)有一種思維束縛,針對(duì)產(chǎn)品來(lái)談體驗(yàn)荷鼠,認(rèn)為這就是產(chǎn)品體...
    劉東閱讀 211評(píng)論 0 1
  • “今天是我妹妹23歲的生日句携,我要為她而戰(zhàn)≡世郑” 賽后矮嫉,托馬斯在接受記者采訪時(shí),用飽含深情的聲音說(shuō)出了這句話牍疏。 他這時(shí)...
    小琴還是小鳳閱讀 816評(píng)論 0 2