linux 线程带参数,Linux中多线程编程并传递多个参数的简单例子
今天上午实验了Linux下的多线程编程,并将多个参数传递给线程要执行的函数。
以下是实验程序的源代码:
/*********************** pthread.c ***************************/
#include
#include
#include
#include
#include
struct argument
{
int num;
char string[30];
};
int main()
{
int i,ret;
void *thread1_func(void *);
void *thread2_func(void *);
void *thread_return1,*thread_return2;/*用来接收两个线程退出后的返回值*/
pthread_t thread1,thread2;
struct argument arg1,arg2;
arg1.num=1949;
strcpy(arg1.string,"中华人民共和国成立");
arg2.num=2009;
strcpy(arg2.string,"建国六十周年");
pthread_create(&thread1,NULL,thread1_func,(void *)&arg1);
pthread_create(&thread2,NULL,thread2_func,(void *)&arg2);
for(i=0;i<=2;i++)
{
printf("我是最初的进程!\n");
sleep(2);
}
ret=pthread_join(thread1,&thread_return1);/*等待第一个线程退出,并接收它的返回值*/
if(ret!=0)
printf("调用pthread_join获取线程1返回值出现错误!\n");
else
printf("pthread_join调用成功!线程1退出后带回的值是%d\n",(int)thread_return1);
ret=pthread_join(thread2,&thread_return2);/*等待第二个线程退出,并接收它的返回值*/
if(ret!=0)
printf("调用pthread_join获取线程2返回值出现错误!\n");
else
printf("pthread_join调用成功!线程2退出后带回的值是%d\n",(int)thread_return2);
return 0;
}
void *thread1_func(void *arg)
{
int i;
struct argument *arg_thread1;/*这里定义了一个指向argument类型结构体的指针arg_thread1,用它来接收传过来的参数的地址*/
arg_thread1=(struct argument *)arg;
for(i=0;i<=3;i++)
{
printf("我来自线程1,传递给我的参数是%d,%s。\n",(*arg_thread1).num,(*arg_thread1).string);
sleep(2);
}
return (void *)123;
}
void *thread2_func(void *arg)
{
int i;
struct argument arg_thread2;/*这里定义了一个argument类型的结构体arg_thread2,用来接收传过来的指针参数指向的值。这种方法和thread1_func函数中的方法都是可行的*/
arg_thread2=*(struct argument *)arg;
for(i=0;i<=3;i++)
{
printf("我来自线程2,传递给我的参数是%d,%s。\n",arg_thread2.num,arg_thread2.string);
sleep(2);
}
return (void *)456;
}
/*********************** 以上是 pthread.c 的内容***************************/
在Linux终端下用 gcc -o pthread
-lpthread pthread.c 命令进行编译,注意应该加上
-lpthread
./pthread 运行
// 运行结果 ///
我来自线程2,传递给我的参数是2009,建国六十周年。
我来自线程1,传递给我的参数是1949,中华人民共和国成立。
我是最初的进程!
我来自线程2,传递给我的参数是2009,建国六十周年。
我是最初的进程!
我来自线程1,传递给我的参数是1949,中华人民共和国成立。
我是最初的进程!
我来自线程1,传递给我的参数是1949,中华人民共和国成立。
我来自线程2,传递给我的参数是2009,建国六十周年。
我来自线程2,传递给我的参数是2009,建国六十周年。
我来自线程1,传递给我的参数是1949,中华人民共和国成立。
pthread_join调用成功!线程1退出后带回的值是123
pthread_join调用成功!线程2退出后带回的值是456
=====================
可以从执行顺序看出,线程之间存在着竞争,并非是按照固定次序运行。
linux 线程带参数,Linux中多线程编程并传递多个参数的简单例子相关推荐
- linux线程多参数传递参数,Linux中多线程编程并传递多个参数
解析Linux中多线程编程并传递多个参数 Linux中多线程编程并传递多个参数实例是本文讲解的内容,不多说,先来看内容. Linux下的多线程编程,并将多个参数传递给线程要执行的函数. 以下是实验程序 ...
- html页面传递list参数,thinkphp中html:list标签传递多个参数实例,thinkphplist_PHP教程...
thinkphp中html:list标签传递多个参数实例,thinkphplist 本文实例讲述了关于thinkphp中html:list标签传多个参数问题解决办法,分享给大家供大家参考.具体分析如下 ...
- 对linux中多线程编程中pthread_join的理解
对linux中多线程编程中pthread_join的理解 分类: 程序员面试 linux学习2013-08-04 21:32 234人阅读 评论(0) 收藏 举报 多线程linuxpthread_jo ...
- linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...
- clone的fork与pthread_create创建线程有何不同pthread多线程编程的学习小结(转)
进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合,这些资源在Linux中被抽 象成各种数据对象:进程控制块.虚存空间.文件系统,文件I/O.信号处理函数.所以创建一个进程的 过程就是这 ...
- 线程与进程、Android多线程编程
线程与进程.Android多线程编程 目录 一.概念 1.程序 2.进程 3.并发 4.并行 5.线程 二.Android中的进程与线程 1.安卓的进程 2.安卓的线程 三.Android多线程编程 ...
- 汇编在嵌入式编程中的作用_如何在嵌入式Power BI报表中以编程方式传递凭据
汇编在嵌入式编程中的作用 In the article, How to embed a Power BI Report Server report into an ASP.Net web applic ...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之多线程编程
文章目录 前言 1.多线程基础编程--创建线程和使用等待函数休眠线程 1.1.程序分析--使用信号量PV操作sem_wait 1.2.程序分析--使用条件变量pthread_cond_wait 2.一 ...
- Linux下多线程编程互斥锁和条件变量的简单使用
Linux下的多线程遵循POSIX线程接口,称为pthread.编写Linux下的多线程程序,需要使用头文件pthread.h,链接时需要使用库libpthread.a.线程是进程的一个实体,是CPU ...
最新文章
- CQRS实践(3): Command执行结果的返回
- 易生信高级转录组分析和数据可视化-最后一天报名
- Hadoop MapReduce工作详细流程(Partitioner/SortComparator/GroupingComparator)
- 学习日记-类继承中的上下转换
- CSDN如何居中对齐
- hibernate树
- 【2019浙江省赛 - K 】Strings in the Pocket(马拉车,思维)
- php开发神器 -- phpStudy
- JavaScript RegExp(正则)
- Leetcode每日一题:217.contains-duplicate(存在重复元素)
- 股市舆情情感分类可视化系统
- 自动跑程序vbs脚本
- SPSS编程-统计自动化-Python脚本开发
- Python-常用模块有哪些
- 使用application对象实现网站访问量统计
- 网页效果图设计之色彩配色索引
- R数据分析:如何在R中使用mutate
- HTML5地理位置定位API接口开发
- 如何在网页上添加一个微信关注链接?(一键跳转微信关注公众号)!!注意是从外部跳到微信关注...
- 编写程序实现以下功能:计算1~n之间的素数并输出
热门文章
- Java Spring IOC用法
- python jieba库下载_Python中jieba库安装步骤及失败原因解析
- python建模分析实操_城市公交站点设置优化模型-基于Python
- java 快速构建ssm项目_SSM快速搭建
- php多条件筛选顺序_php多条件组合筛选
- perl转python_将行转换为perl或python中的列
- w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
- html语言及语法结构,HTML语法结构.ppt
- java json写入内存_如何在客户端上减少JSON.stringify使用的内存量?
- 解决谷歌浏览器F12打不开调试页面的问题。