<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>
    以文本方式查看主題

    -  曙海教育集團(tuán)論壇  (http://www.hufushizhe.com/bbs/index.asp)
    --  Linux技術(shù)討論區(qū)  (http://www.hufushizhe.com/bbs/list.asp?boardid=7)
    ----  嵌入式基礎(chǔ)__linux多線程編程  (http://www.hufushizhe.com/bbs/dispbbs.asp?boardid=7&id=1328)

    --  作者:wangxinxin
    --  發(fā)布時(shí)間:2010-11-15 9:07:50
    --  嵌入式基礎(chǔ)__linux多線程編程
    簡(jiǎn)單的多線程編程
      這里引用的是在百度上找的資料,感覺(jué)挺好的,挺適合入門(mén)的.
     
    轉(zhuǎn):
    學(xué)東西,往往實(shí)例才是最讓人感興趣的,老是學(xué)基礎(chǔ)理論,不動(dòng)手,感覺(jué)沒(méi)有成就感,呵呵。

    下面先來(lái)一個(gè)實(shí)例。我們通過(guò)創(chuàng)建兩個(gè)線程來(lái)實(shí)現(xiàn)對(duì)一個(gè)數(shù)的遞加。
    或許這個(gè)實(shí)例沒(méi)有實(shí)際運(yùn)用的價(jià)值,但是稍微改動(dòng)一下,我們就可以用到其他地方去拉。

    下面是我們的代碼:

    /*thread_example.c :  c multiple thread programming in linux
      *author : falcon
      *E-mail : tunzhj03@st.lzu.edu.cn
      */

    #include <pthread.h>
    #include <stdio.h>
    #include <sys/time.h>
    #include <string.h>
    #define MAX 10

    pthread_t thread[2];
    pthread_mutex_t mut;
    int number=0, i;

    void *thread1()
    {
            printf ("thread1 : I\'m thread 1\\n");

            for (i = 0; i < MAX; i++)
            {
                    printf("thread1 : number = %d\\n",number);
                    pthread_mutex_lock(&mut);
                            number++;
                    pthread_mutex_unlock(&mut);
                    sleep(2);
            }


            printf("thread1 :主函數(shù)在等我完成任務(wù)嗎?\\n");
            pthread_exit(NULL);
    }

    void *thread2()
    {
            printf("thread2 : I\'m thread 2\\n");

            for (i = 0; i < MAX; i++)
            {
                    printf("thread2 : number = %d\\n",number);
                    pthread_mutex_lock(&mut);
                            number++;
                    pthread_mutex_unlock(&mut);
                    sleep(3);
            }


            printf("thread2 :主函數(shù)在等我完成任務(wù)嗎?\\n");
            pthread_exit(NULL);
    }

    void thread_create(void)
    {
            int temp;
            memset(&thread, 0, sizeof(thread));          //comment1
            /*創(chuàng)建線程*/
            if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)       //comment2
                    printf("線程1創(chuàng)建失敗!\\n");
            else
                    printf("線程1被創(chuàng)建\\n");

            if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)  //comment3
                    printf("線程2創(chuàng)建失敗");
            else
                    printf("線程2被創(chuàng)建\\n");
    }

    void thread_wait(void)
    {
            /*等待線程結(jié)束*/
            if(thread[0] !=0) {                   //comment4
                    pthread_join(thread[0],NULL);
                    printf("線程1已經(jīng)結(jié)束\\n");
            }
            if(thread[1] !=0) {                //comment5
                    pthread_join(thread[1],NULL);
                    printf("線程2已經(jīng)結(jié)束\\n");
            }
    }

    int main()
    {
            /*用默認(rèn)屬性初始化互斥鎖*/
            pthread_mutex_init(&mut,NULL);

            printf("我是主函數(shù)哦,我正在創(chuàng)建線程,呵呵\\n");
            thread_create();
            printf("我是主函數(shù)哦,我正在等待線程完成任務(wù)阿,呵呵\\n");
            thread_wait();

            return 0;


    主站蜘蛛池模板: 四虎成人免费观看在线网址| 女人体a级1963免费| 亚洲色国产欧美日韩| 调教15小男生gay脱裤子| 在总受文里抢主角攻np| 久久se精品一区二区国产| 朋友把我玩成喷泉状| 免费人成视频在线| 美女胸被狂揉扒开吃奶二次元| 国产精品俺来也在线观看| 三级视频中文字幕| 日本xxxx高清在线观看免费 | 一本久久综合亚洲鲁鲁五月天| 日本免费一区二区在线观看| 亚洲熟妇色xxxxx欧美老妇| 男女一边摸一边做爽视频| 国产午夜一区二区在线观看| 777xxxxx欧美| 在线观看免费人成视频| 中文字幕人成乱码熟女| 日日日天天射天天干视频| 亚洲人成网男女大片在线播放 | 国产精品久久久久久福利| xxxxx日本人| 思思久久99热只有频精品66| 久久精品国产只有精品66| 樱桃视频高清免费观看在线播放| 人体内射精一区二区三区| 窝窝影院午夜看片| 国产丝袜视频一区二区三区| 香蕉视频一区二区三区| 国产精品无码久久久久| www久久精品| 小泽玛利亚番号| 久久久久亚洲精品无码系列| 日韩在线视频免费| 亚洲成AV人综合在线观看| 欧美色图亚洲激情| 免费无遮挡毛片| 精品久久久无码中文字幕边打电话 | 狠狠色噜噜狠狠狠狠97不卡|