【Linux多线程编程-自学记录】04.线程链接-pthread_join

news/2024/11/16 10:47:52/

Linux多线程编程学习代码(代码已上传gitee,还请各位兄弟点个Star哦!)

https://gitee.com/chenshao777/linux_thread.git


笔记:
线程链接 pthread_join
int pthread_join(pthread_t thread, void **retval);

功能:
1.调用该函数的线程会一直阻塞,直到指定pid为thread的线程调用pthread_exit、return或者被取消
2.pthread_join会使指定的线程处于分离状态,分离状态的线程不能被join

参数:
thread:链接线程的pid
retval:返回码

如果指定线程被取消,retval被置为PTHREAD_CANCELED

如果调用成功,函数返回0
失败返回错误码


spu.h文件

#ifndef _SPU_H_
#define _SPU_H_#include<stdio.h>
#include<pthread.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>#endif

04.thread_join.c文件

/*1.创建两个线程,其中线程2执行过程中自己分离自己2.main线程中join两个线程3.join线程1成功,返回码为0,pthread_join返回04.join线程2失败,返回码随机,pthread_join返回22,表示线程不可链接
*/#include "spu.h"void *thread_fun1(void *arg)
{for(int i = 0; i< 10; i++)printf("thread01 : %d\n", i);return (void*)0;
}void *thread_fun2(void *arg)
{for(int i = 100; i< 110; i++){printf("thread02 : %d\n", i);pthread_detach(pthread_self());   //分离线程,分离自己,参数:线程id}return (void*)0;
}int main(int argc, char *argv[])
{	int err1, err2;pthread_t thread_id1,thread_id2; void * __thread_return1, * __thread_return2;err1 = pthread_create(&thread_id1, NULL, thread_fun1, NULL);err2 = pthread_create(&thread_id2, NULL, thread_fun2, NULL);if(err1 || err2)printf("create failed!\n");elseprintf("create success!\n");printf("join thread01 return %d\n",pthread_join(thread_id1, &__thread_return1));printf("join thread02 return %d\n",pthread_join(thread_id2, &__thread_return2));printf("线程1返回码 %d\n",__thread_return1);printf("线程2返回码 %d\n",__thread_return2);return 0;
}

http://www.ppmy.cn/news/60696.html

相关文章

SQL Server日期时间字符串的处理和转换

在SQL Server中&#xff0c;您可以使用T-SQL函数进行日期时间字符串的处理和转换。要判断一个日期字符串是否包含时间信息&#xff0c;可以使用T-SQL内置的函数CONVERT和TRY_CONVERT&#xff0c;并指定时间格式。 例如&#xff0c;假设有一个名为date_string的日期字符串&…

【华为OD机试 2023最新 】 找数字、找等值元素(C语言题解 100%)

文章目录 题目描述输入描述输出描述用例题目解析代码思路:C语言题目描述 给一个二维数组nums,对于每一个元素nums[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出-1。 输入描述 输入第一行为二维数组的行 输入第二行为二维数…

从零开始三相逆变

1、题目分析 2、方案介绍 系统以220V市电作为电源&#xff0c;通过隔离调压器后分两路经过整流滤波后输入电路&#xff0c;一路为主回路供电&#xff0c;一路为辅助电源供电。三路SPWM波通过数字隔离器ISO7760送至由驱动芯片UCC27211控制三相半桥逆变电路&#xff0c;生成三路…

Perf工具统计CPU性能

Perf 性能检测工具 Perf 是一个内置于Linux内核中的工具&#xff0c;用于性能分析和调优。它可以对系统的CPU使用情况、内存使用情况、磁盘I/O、网络I/O等进行监控和分析&#xff0c;并提供了丰富的分析和可视化工具&#xff0c;以帮助用户定位和解决性能问题。perf可以进行函…

TikTok跨境电商如何选品和营销?

鑫优尚电子商务&#xff1a;TikTok目前发展飞速&#xff0c;全球的MAU是5.6亿。现在作为全球炙手可热的短视频平台&#xff0c;全球流量相当庞大&#xff0c;覆盖75个语种、全球150个国家和地区。 对于从事跨境电商行业的人来说&#xff0c;又怎能错过一个流量这么好的平台呢&a…

什么是Spring IOC?有什么作用?

1、什么是IOC&#xff1f; IOC的全英文名是&#xff1a;Inversion Of Control &#xff0c;直译过来就是控制反转&#xff0c;控制反转是把传统上由程序代码直接操控对象&#xff08;new对象&#xff09;的调用权交给ioc容器&#xff0c;由容器来实现对象的创建&#xff0c;依…

深入了解Java内存模型

前言 Java内存模型&#xff08;Java Memory Model&#xff0c;简称JMM&#xff09;是一种重要的规范&#xff0c;它定义了Java虚拟机&#xff08;JVM&#xff09;如何在多线程环境下进行内存管理。Java程序员必须理解JMM&#xff0c;才能正确并发编程。本文将详细介绍JMM的概念…

关于tomcat版本不同导致的get请求携带中文参数乱码的问题产生的过程

URL编码网址链接&#xff1a;https://tool.ip138.com/urlencode/ String arg "中文"; //模拟浏览器get请求输入中文参数byte[] bytes1 arg.getBytes(StandardCharsets.UTF_8);String res1 URLEncoder.encode(arg, "UTF-8"); //浏览器地址栏URL编码Stri…