多线程编程(Linux下的POSIX线程)

线程从创建到退出到回收

首先,线程之间是共享资源的,而这份资源就叫做进程。

进程标识符PID,线程标识符tid(一个pthread_t类型变量),且它们的作用域范围不一样

在Linux终端编译时包含pthread库

gcc Pthread_Text1.c -lpthread

查看线程的tid

#include <pthread.h>
#include <stdio.h>

int main()
{
	pthread_t tid = pthread_self();  //获取主线程的tid
    //可以在此用printf输出tid
	return 0;
}

创建线程

#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>

int main()
{

	pthread_t tid1;
	int ret = pthread_create(&tid1,NULL,fun,NULL);
	if(ret != 0){
		perror("pthread_create");
		return -1;
	}

	/*tid_main 为通过pthread_self获取的线程ID,tid_new通过执行pthread_create成功后tid指向的空间*/
	printf("tid_main = %lu tid_new = %lu \n",(unsigned long)pthread_self(),(unsigned long)tid1);
	
	/*因线程执行顺序随机,不加sleep可能导致猪线程先执行,导致进程结束,无法执行到子线程*/
	sleep(1);

	return 0;
}

退出与回收线程

三种方法:

1.进程结束后所有线程会随之结束

2.pthread_exit由该线程主动结束

3,由其他线程调用pthread_cancel而结束

回收线程资源

pthread_join阻塞方式

pthread_tryjoin_np非阻塞方式

线程的控制

临界资源访问与线程的的执行顺序控制

互斥锁、信号量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值