程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一起talk C栗子吧(第一百二十二回:C語言實例

一起talk C栗子吧(第一百二十二回:C語言實例

編輯:關於C

各位看官們,大家好,上一回中咱們說的是線程知識體系圖的例子,這一回咱們說的例子是:多線程。閒話休提,言歸正轉。讓我們一起talk C栗子吧!

看官們,我首先給大家拜個晚年,祝大家在新的一年裡身體健康,萬事如意。

今天我們介紹一下多線程,我相信大家都聽過這個名詞,但是具體的含義是什麼呢?其實多線程是指兩個或者兩個以上的線程在一起運行,他們共同完成某個工作。

我們在前面的章回中介紹過使用pthread_create()函數去創建線程。如果想使用多線程,那麼只需要多次使用該函數去創建線程就可以。接下來我們舉例子來說明。

下面是核心的代碼:

    while(count > 0)
    {
        switch(count)
        {
        case 1:
            strcpy(param, "This is Thread:1");
            break;
        case 2:
            strcpy(param, "This is Thread:2");
            break;
        case 3:
            strcpy(param, "This is Thread:3");
            break;
        case 4:
            strcpy(param, "This is Thread:4");
            break;
        case 5:
            strcpy(param, "This is Thread:5");
            break;
        default:
            break;
        }

        res = pthread_create(&thread_value,NULL,thread_func,(void *)param);
        if(0 != res)
        {
            printf("%s ,it can't be created \n",param);
            return 1;
        }

        sleep(1);
        count--;
    }

我們在代碼中給count賦值為5,然後通過循環語句來創建線程,這樣就可以創建5個線程。另外,這些線程共享一個線程函數,只是傳遞給該函數的參數不同。下面是該函數的的代碼,請大家參考:

void *thread_func(void *param)
{
    int status;

    printf("%s \n",(char *)param);

    pthread_exit(&status); // end the thread
}

函數只是簡單地輸出參數中的內容,用來表明不同的線程在運行,然後就結束線程。

看官們,正文中就不寫代碼了,完成的代碼放到了我的資源中,大家可以下載使用。

下面是程序的運行結果,請大家參考:

Create multi  thread 
This is Thread:5  //第五個線程在運行
This is Thread:4  //第四個線程在運行 
This is Thread:3  //第三個線程在運行 
This is Thread:2  //第二個線程在運行 
This is Thread:1  //第一個線程在運行 

各位看官,關於多線程的例子咱們就說到這裡。我們只是簡單地介紹如何去創建多線程,其實最麻煩的是如何去調度多個線程。因為線程的調度會涉及到操作系統相關的知識,因此,暫時先不做介紹。我們以後有機會了會給大家介紹多線程調度的知識。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved