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執行緒
- Java多執行緒入門Java執行緒
- python爬蟲入門八:多程式/多執行緒Python爬蟲執行緒
- 多執行緒與高併發(一)多執行緒入門執行緒
- Java多執行緒學習(一)Java多執行緒入門Java執行緒
- 多執行緒基礎入門執行緒
- Android入門教程 | 多執行緒Android執行緒
- day20_多執行緒入門丶執行緒安全執行緒
- Java入門教程十三(多執行緒)Java執行緒
- go語言多執行緒入門筆記-執行緒同步Go執行緒筆記
- Java入門系列-21-多執行緒Java執行緒
- Java多執行緒傻瓜入門介紹Java執行緒
- Java 高階 --- 多執行緒快速入門Java執行緒
- java多執行緒的入門小記Java執行緒
- 多執行緒,多程式執行緒
- JavaSE_多執行緒入門 執行緒安全 死鎖 狀態 通訊 執行緒池Java執行緒
- Linux C++ 多執行緒程式設計LinuxC++執行緒程式設計
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- Java多執行緒 -- wait() 和 notify() 使用入門Java執行緒AI
- c++11 多執行緒入門教程(一)C++執行緒
- QT從入門到入土(四)——多執行緒QT執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒
- Python 多執行緒多程式Python執行緒
- 【Python入門基礎】程式和執行緒Python執行緒
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- Linux -c- 多執行緒Linux執行緒
- Python多執行緒程式設計深度探索:從入門到實戰Python執行緒程式設計
- [短文速讀 -5] 多執行緒程式設計引子:程式、執行緒、執行緒安全執行緒程式設計
- pytest(13)-多執行緒、多程式執行用例執行緒
- Linux多執行緒伺服器端程式設計Linux執行緒伺服器程式設計
- Linux多執行緒面試題Linux執行緒面試題
- 多執行緒和多執行緒同步執行緒
- QT從入門到入土(四)——多執行緒(QtConcurrent::run())QT執行緒
- Python 多執行緒及程式Python執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- pytest多程式/多執行緒執行測試用例執行緒