笔记十:线程间的通信(pthread_exit()和pthread_join())
#include <stdio.h>
#include <pthread.h>
void error(char *s)
{
printf("%s",s);
}
void *fun1(void *arg)
{
printf("thread 1 returning\n");
return (void *)1;
}
void *fun2(void *arg)
{
printf("thread 2 returning\n");
pthread_exit((void *)2);
}
int main()
{
int err;
pthread_t tid1,tid2;
void *tret;
err = pthread_create(&tid1,NULL,fun1,NULL);
if(err != 0)
{
error("create thread 1 failure\n");
return -1;
}
err = pthread_create(&tid2,NULL,fun2,NULL);
if(err != 0)
{
error("create thread 2 failure\n");
return -2;
}
err = pthread_join(tid1,&tret);
pthread_cancel(tid1);
if(err != 0)
error("can't join with thread 1\n");
printf("thread 1 exit code %d\n",tret);
err = pthread_join(tid2,&tret);
if(err != 0)
error("can't join with thread 2\n");
printf("thread 2 exit code %d\n",tret);
return 0;
}
运行结果如下:
注意:pthread_create()和
pthread_exit()函数的无类型指针参数能传递的数值可以不止一个,该指针可以传递包含更复杂信息的结构的地址,但是注意这个结构所使用的内存在调用者完成调用以后必须仍然是有效的,否则就会出现无效或者非法内存访问。
笔记十:线程间的通信(pthread_exit()和pthread_join())的更多相关文章
- iOS开发多线程篇—线程间的通信
iOS开发多线程篇—线程间的通信 一.简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任 ...
- Java核心知识点学习----多线程并发之线程间的通信,notify,wait
1.需求: 子线程循环10次,主线程循环100次,这样间隔循环50次. 2.实现: package com.amos.concurrent; /** * @ClassName: ThreadSynch ...
- java多线程详解(6)-线程间的通信wait及notify方法
Java多线程间的通信 本文提纲 一. 线程的几种状态 二. 线程间的相互作用 三.实例代码分析 一. 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:(1). 产生(New) ...
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
一.NSOperation NSOperation和NSOperationQueue实现多线程的具体步骤 先将需要执行的操作封装到一个NSOperation对象中 然后将NSOperation对象添加 ...
- 新建线程与UI线程间的通信
现在用一个实例来演示一下自己的新建线程与UI线程间的通信. UI界面包含3个控件: 一个输入框,用来输入数字: 一个显示框,用来显示从2开始,到输入数字之间的所有质数: 一个按钮,点击后获取输入框输入 ...
- C# 线程间互相通信
C#线程间互相通信主要用到两个类:AutoResetEvent和ManualResetEvent. 一.AutoResetEvent AutoResetEvent 允许线程通过发信号互相通信,线程通过 ...
- QThread与其他线程间相互通信
转载请注明链接与作者huihui1988 QThread的用法其实比较简单,只需要派生一个QThread的子类,实现其中的run虚函数就大功告成, 用的时候创建该类的实例,调用它的start方法即可. ...
- Handler不同线程间的通信
转http://www.iteye.com/problems/69457 Activity启动后点击一个界面按钮后会开启一个服务(暂定为padService),在padService中会启动一个线程( ...
- Java多线程中线程间的通信
一.使用while方式来实现线程之间的通信 package com.ietree.multithread.sync; import java.util.ArrayList; import java.u ...
- C# 线程间互相通信 AutoResetEvent和ManualResetEvent
C#线程间互相通信主要用到两个类:AutoResetEvent和ManualResetEvent. 一.AutoResetEvent AutoResetEvent 允许线程通过发信号互相通信,线程通过 ...
随机推荐
- hadoopzookeeper
一.zookeeper是什么(概括)? Zookeeper是一个分布式协调服务的开源框架,为分布式程序提供协调服务,同时用来解决分布式集群中应用系统的数据一致性问题. zookeeper在本质上是一个 ...
- JavaScript 包装类
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- @click使用三元运算符
@click="scope.row.status == 1 ? '' : blockUp(scope.row) "
- PyTorch中的矩阵乘法
1. 二维矩阵乘法 , 其中 , , 输出 的维度是.该函数一般只用来计算两个二维矩阵的矩阵乘法,而且不支持broadcast操作. 2. 三维带Batch矩阵乘法 由于神经网络训练一般采用mi ...
- sql自学记录
复习 SQL join :用于根据两个或多个表中的列之间的关系,从这些表中查询数据 eg: SELECT Persons.LastName, Persons.FirstName, Orders.Ord ...
- Promise async await的用法实例一枚
getlog2() { console.log("222"); }, getlog3() { return new Promise((resolve, reject) => ...
- win8 改win7 最全教程(包含可能遇到的所有问题)
今日,帮一个朋友的把她的系统从win8 优雅降级到了win7,大家都知道win8改win7 不好改啊.......话不多,上本人的总结的教程. 首先 ,win8改win7 需要对系统格盘,这里的原因我 ...
- 从babel编译结果分析class的实现原理
示例: class A { // 属性表达式 prop1 = 1; // get方法 get value() { console.log('Getting the current value!'); ...
- Django视图中的请求与响应
一 请求 一 限制http请求 视图中的request,实际上是django源码中的HTTPRequest的子类WSGIRequest类的实例对象,主要由django对客户端请求的http协议报文进行 ...
- 关于Go语言的底层,你想知道的都在这里!
目录 1. GoLang语言 1.1 Slice 1.2 Map 1.3 Channel 1.4 Goroutine 1.5 GMP调度 1.6 垃圾回收机制 1.7 其他知识点 2. Web框架Gi ...