笔记十:线程间的通信(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 允许线程通过发信号互相通信,线程通过 ...
随机推荐
- Manage your references to .Net assemblies Dynamics 365 for Operations VS projects
(Dynamics 365 for Operations was previously known as the New Dynamics AX) Dynamics 365 for Operation ...
- PTA·电信计费系列问题总结
一.题目涉及的知识点 1.容器的使用 2.抛出异常 3.抽象类 4.继承与多态 5.正则表达式 二.题目分析总结 1.题目集08:7-1 电信计费系列1-座机计费 实现一个简单的电信计费程序:假设南昌 ...
- node报错解决办法
依次报错: Error: Cannot find module 'gifsicle' Syntax Error: Error: Cannot find module 'imagemin-gifsicl ...
- maven2创建的archetypeArtifactId类型
原文:https://www.cnblogs.com/xiziyin/archive/2009/11/22/1608239.html 添加翻译:(我总觉得看汉字比看英文要快得多) 看maven-def ...
- SpringBoot的几大重要问题
1: traceID调用链 2:异步调用注解问题 import org.springframework.scheduling.annotation.Async;import org.springfra ...
- 复制文本到粘贴板 (vue3)(兼容ios)
// 点击复制到剪贴板 const copyToClipboard = (content)=> { if (window.clipboardData) { window.clipboardDat ...
- LaTeX in 24 Hours - 1. Introduction
文章目录 1.1 What is LaTeX? 1.2 Why LaTeX Over Other Word Processors 1.3 How to Prepare a LaTeX Input Fi ...
- 基本的dns命令
打开cmd的方式 win+r 键 输入cmd 管理员方式运行 打开桌面 命令提示符 盘符切换 直接输入要切换的盘 查看当前目录下所有文件 dir 切换目录 cd /d 跨盘 ...
- vulnhub靶场之PYLINGTON: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Pylington: 1,下载地址:https://download.vulnhub.com/pylington/pylington.ova,下 ...
- 【数据结构与算法学习】散列表(Hash Table,哈希表)
实现语言:C++ 1. 散列表 散列表,英文名称为Hash Table,又称哈希表.杂凑表等. 线性表和树表的查找是通过比较关键字的方法,查找的效率取决于关键字的比较次数. 而散列表是根据关键字直接访 ...