Linux程式多執行緒入門
例項1:程式和執行緒並行輸出
/*************************************************************************
> File Name: threadbase.c
> Author:
> Mail:
> Created Time: 2015年12月04日 星期五 17時44分38秒
************************************************************************/
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
/*要執行的執行緒函式*/
void *thread_routine(void *arg)
{
printf("i am a thread, my thread id is : %ld\n", pthread_self());
int i = 0;
for (i = 1; i < 11; ++i){
printf("thread i = %d\n", i);
fflush(stdout);
sleep(1);
}
printf("thread exit\n");
}
int main()
{
pthread_t tid;
int ret = 0;
ret = pthread_create(&tid, NULL, thread_routine, NULL);//建立一個執行緒
if(ret != 0){
printf("pthread_create error\n");
exit(0);
}
int i = 0;
for (i = 1; i < 11; ++i){
printf("main i = %d\n", i);
fflush(stdout);
sleep(1);
}
sleep(2);//等待執行緒退出,如果執行緒還在執行,但是程式退出,那麼執行緒也會退出
printf("parent exit\n");
exit(0);
}
例項2:在程式中使用等待執行緒的函式和執行緒退出函式
/*************************************************************************
> File Name: threadbase.c
> Author:
> Mail:
> Created Time: 2015年12月04日 星期五 17時44分38秒
************************************************************************/
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
void *thread_routine(void *arg)
{
printf("i am a thread, my thread id is : %ld\n", pthread_self());
int i = 0;
for (i = 1; i < 11; ++i){
printf("thread i = %d\n", i);
fflush(stdout);
sleep(1);
}
sleep(3);
printf("child exit\n");
pthread_exit(NULL);//執行緒結束函式
}
int main()
{
pthread_t tid;
int ret = 0;
ret = pthread_create(&tid, NULL, thread_routine, NULL);
if(ret != 0){
printf("pthread_create error\n");
exit(0);
}
int i = 0;
for (i = 1; i < 11; ++i){
printf("main i = %d\n", i);
fflush(stdout);
sleep(1);
}
pthread_join(tid, NULL);//等待執行緒退出
printf("parent exit\n");
exit(0);
}
例項3:建立多個執行緒,並向執行緒傳遞資料
/*************************************************************************
> File Name: threadbase.c
> Author:
> Mail:
> Created Time: 2015年12月04日 星期五 17時44分38秒
************************************************************************/
#include<stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <pthread.h>
typedef struct Threadinfo{
char name[64];
int age;
int numId;
}ThreadInfo;
int nNum, nLoop;
void *thread_routine(void *arg)
{
int i = 0;
// pthread_detach(pthread_self());
ThreadInfo * p = (ThreadInfo *)arg;
for (i = 0; i < nLoop; ++i){
printf("thread id is :%ld, i = %d, numid is %d\n", pthread_self(), i, p->numId);
}
printf("child exit: %ld\n", pthread_self());
pthread_exit(arg);
}
int main()
{
int i = 0;
pthread_t tidArray[200];
ThreadInfo tmp[200];
printf("input the number of thread:");
scanf("%d", &nNum);
printf("input the number of nLoop:");
scanf("%d", &nLoop);
int ret = 0;
for (i = 0; i < nNum; ++i){
memset(&tmp[i], 0, sizeof(ThreadInfo));
tmp[i].numId= i;
pthread_create(&tidArray[i], NULL, thread_routine, &tmp[i]);
}
for (i = 0; i < nNum; ++i){
pthread_join(tidArray[i], NULL);
}
printf("parent exit\n");
exit(0);
}
相關文章
- 入門python多執行緒/多程式Python執行緒
- Java多執行緒(一)多執行緒入門篇Java執行緒
- iOS多執行緒程式設計入門iOS執行緒程式設計
- JAVA多執行緒入門Java執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- Java多執行緒程式設計入門(轉)Java執行緒程式設計
- 多執行緒基礎入門執行緒
- python 多執行緒 入門Python執行緒
- python爬蟲入門八:多程式/多執行緒Python爬蟲執行緒
- day20_多執行緒入門丶執行緒安全執行緒
- Linux系統下的多執行緒程式設計入門(轉)Linux執行緒程式設計
- Java入門教程十三(多執行緒)Java執行緒
- Android入門教程 | 多執行緒Android執行緒
- go語言多執行緒入門筆記-執行緒同步Go執行緒筆記
- Java多執行緒傻瓜入門介紹Java執行緒
- Java 高階 --- 多執行緒快速入門Java執行緒
- java多執行緒的入門小記Java執行緒
- Java入門系列-21-多執行緒Java執行緒
- linux 多執行緒程式設計Linux執行緒程式設計
- 多執行緒,多程式執行緒
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- c++11 多執行緒入門教程(一)C++執行緒
- QT從入門到入土(四)——多執行緒QT執行緒
- c++11多執行緒入門例項C++執行緒
- vc入門寶典六(多執行緒) (轉)執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒
- Win32API下的多執行緒程式設計入門Win32API執行緒程式設計
- Linux中檢視程式的多執行緒Linux執行緒
- 4、Linux多執行緒,執行緒同步(2)Linux執行緒
- 多執行緒-程式和執行緒的概述執行緒
- Linux 多執行緒程式設計(不限Linux)Linux執行緒程式設計
- Java多執行緒 -- wait() 和 notify() 使用入門Java執行緒AI
- Java多執行緒系列——從菜鳥到入門Java執行緒
- J2me多執行緒(入門級別)執行緒
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- linux-多執行緒Linux執行緒