各位看官們,大家好,上一回中咱們說的是線程知識體系圖的例子,這一回咱們說的例子是:多線程。閒話休提,言歸正轉。讓我們一起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 //第一個線程在運行
各位看官,關於多線程的例子咱們就說到這裡。我們只是簡單地介紹如何去創建多線程,其實最麻煩的是如何去調度多個線程。因為線程的調度會涉及到操作系統相關的知識,因此,暫時先不做介紹。我們以後有機會了會給大家介紹多線程調度的知識。欲知後面還有什麼例子,且聽下回分解 。