linux C 線程學習

來源:互聯網
上載者:User
/*linux tirminal 中輸入vim demo_thread.c, 然後輸入以下代碼:*/#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;//線程1調用的方法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 :主函數在等我完成任務嗎?/n");        pthread_exit(NULL);}//線程2調用的方法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 :主函數在等我完成任務嗎?/n");        pthread_exit(NULL);}//建立線程void thread_create(void){        int temp;        memset(&thread, 0, sizeof(thread));          //comment1        /*建立線程*/        if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)       //comment2                printf("線程1建立失敗!/n");        else                printf("線程1被建立/n");        if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)  //comment3                printf("線程2建立失敗");        else                printf("線程2被建立/n");}//等待線程void thread_wait(void){        /*等待線程結束*/        if(thread[0] !=0) {                   //comment4                pthread_join(thread[0],NULL);                printf("線程1已經結束/n");        }        if(thread[1] !=0) {                //comment5                pthread_join(thread[1],NULL);                printf("線程2已經結束/n");        }}int main(){        /*用預設屬性初始化互斥鎖*/        pthread_mutex_init(&mut,NULL);        printf("我是主函數哦,我正在建立線程,呵呵/n");        thread_create();        printf("我是主函數哦,我正在等待線程完成任務阿,呵呵/n");        thread_wait();        return 0;}/*儲存並退出:wq編譯:gcc demo_thread.c -lpthread 運行: ./a.out  */

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.