线程学习五(线程属性、重入、进程与信号的关系,openmp标准)

线程属性

在使用函数pthread_create()
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
第二个项就用到了属性,是pthread_attr_t类型。
之前都是用的NULL,跟着默认来。

相关函数:
pthread_attr_init();
pthread_attr_destroy ();
- initialize and destroy thread attributes object

#include <pthread.h>
 int pthread_attr_init(pthread_attr_t *attr);
 	 int pthread_attr_destroy(pthread_attr_t *attr);
  	 Compile and link with -pthread.

SEE ALSO
pthread_attr_setaffinity_np(3), pthread_attr_setdetachstate(3),
pthread_attr_setguardsize(3), pthread_attr_setinheritsched(3),
pthread_attr_setschedparam(3), pthread_attr_setschedpolicy(3),
pthread_attr_setscope(3), pthread_attr_setstack(3),
pthread_attr_setstackaddr(3), pthread_attr_setstacksize(3),
pthread_create(3), pthread_getattr_np(3), pthreads(7)
以上都是对于线程属性进行控制的一些方法。

介绍一些属性:
pthread_attr_setdetachstate
分离一个线程有两种方法一种是创建线程的时候,使用默认是属性,然后调用pthread_detach函数,就可以分离一个线程
另一种就是首先创建一个属性结构体,然后使用pthread_attr_setdetachstate,设置分离属性,然后再创建线程。

pthread_attr_setstack:设置栈相关内容;
pthread_attr_setstackaddr:选择栈所在的地址;
pthread_attr_setstacksize:设置栈空间的大小;
pthread_attr_getstacksize:获得栈空间的大小;

#include <pthread.h>
   	int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
   	int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize);

在这里插入图片描述

属性的使用

属性的使用和之前所学的互斥量或是条件变量是不同的,它有点类似类。
代码功能:查看进程可以创建的最大的线程量(64位不好使用,因为空间太大,首先消耗的一定是进程号)

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

void *func(void *p)
{
   
	while(1)
		pause();
	pthread_exit(NULL);
}


int main()
{
   

	int i;
	int err;</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值