Linux程序多线程入门
来源:互联网 发布:centos tmp 自动删除 编辑:程序博客网 时间:2024/06/06 10:02
实例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);}
0 0
- Linux程序多线程入门
- Linux 多线程编程入门
- linux多线程入门
- Linux多线程基础入门
- linux多线程入门
- linux多线程编程入门
- Linux多线程编程入门
- Linux C进程与多线程入门—(4)简单多线程程序
- 入门多线程服务器程序实例
- 多线程程序debug linux
- linux多线程程序
- Linux多线程编程入门(1)
- Linux多线程编程入门(2)
- Linux多线程编程入门(3)
- linux多线程编程基础入门
- linux程序开发入门
- linux程序开发入门
- linux程序开发入门
- 第十三周项目2 Kruskal算法
- 第十二周 项目二 操作用邻接表储存的表
- 第十五周项目2-用哈希法组建关键字
- 前缀,中缀,后缀表达式的转换,表达式的求值
- iOS 【UIKit-UIBarButtonItem 的四种初始化方式】
- Linux程序多线程入门
- 第15周项目2——用哈希法组织关键字
- Js urlencode/urldecode
- 第15周 “知原理”检验项目 3
- 第十四周项目2二叉树排序树中查找的路径
- 第十四周 项目1 验证算法(3)
- android studio 重启adb
- 第14周项目1-(3)验证二叉排序树相关算法
- NCURSES的安装学习