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.相关知识
如果风景早已不在
我想我谁都不爱。