多线程之线程控制与互斥

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); 
} 
程序2:
void 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库在共享区的一个类或者结构体的起始地点地址。 以后多线程就用共享区里的栈空间了。 ———————————————————————————————————————————

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

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

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

经验分享 程序员 微信小程序 职场和发展