多线程之线程控制与互斥

1.线程的缺点有哪些?
第一点 健壮性低------ 一个线程挂了容易影响另外的线程
第二点 缺乏访问控制----- 不像进程是独立的,可以写时拷贝,线程随进随出有点危险哦
第三点 编写难度上升----- 编写一个多线程的代码和调试可比单线程难多了
——————————————————————————————————————————

2.pthread_join函数怎么用?
在这里插入图片描述
nullptr 位置是要输入一个**void类型 也就是指针的指针。
———————————————————————————————————————————

3.指针作为输出型参数,能不能写个代码验证下?

程序1:
void myMalloc(char *s) //在函数中分配内存,再返回 
{ 
	s=(char *) malloc(100); 
} 
void main() 
{ 
	char *p=NULL; 
	myMalloc(p); //这里的p实际还是NULL,p的值没有改变
	if(p) free(p); 
} 
程序2void myMalloc(char **s) //指针的指针,双重指针类型
{ 
   *s=(char *) malloc(100); 
 } 
void main()     
{ 
	char *p=NULL; 
	myMalloc(&p); //这里的p可以得到正确的值
	if(p) 
		free(p); 
} 

———————————————————————————————————————————

4.exit(10)是退出线程还是进程?
退出整个进程。
要用调用pthread_exit((void*)13)函数。
———————————————————————————————————————————

5.取消线程用哪个函数?线程被取消返回什么?
用 pthread_cancel(tid)函数,线程被取消返回-1
———————————————————————————————————————————

6.pthread_tid的具体含义是什么?
pthread动态库加载到内存中,将地址映射到地址空间里的共享区,为了让线程更好的找到自己在共享区里的具体位置以调用pthread,所以tid为pthread库在共享区的一个类或者结构体的起始地点地址。 以后多线程就用共享区里的栈空间了。
多线程之线程控制与互斥_第1张图片
———————————————————————————————————————————

7.什么叫线程局部存储?
线程的局部存储由 __thread 关键字实现
定义一个全局变量 比如 int a = 10;
在不同的线程修改,每一个线程打印出来的a都是一样的
但这样写 __thread int a = 10; 则每个线程独享一个int a 变量。
———————————————————————————————————————————

8.线程调用execl(程序替换)会怎么样?
新线程被完全替换,并退出,而主线程不执行原来的代码,而是去执行替换后的代码,相当于任意一个线程调用了execl,就是进行了进程替换。
———————————————————————————————————————————
9.线程分离用哪个函数?
在这里插入图片描述
分离线程后既不用等待新线程,又不用释放新线程的资源,啥都不用管。
———————————————————————————————————————————
10.相关知识在这里插入图片描述

如果风景早已不在
我想我谁都不爱。

你可能感兴趣的:(线程,线程,多线程)