刚刚休息了,今天再发一篇博客,今天开始(总共三天),我会发表一些线程的相关知识,请大家能够寻找我的不足,谢谢xdm了.
冲冲冲 O(∩_∩)O.
1.线程概念
何为线程呢?我的理解就是与就是一个进程的一个控制单元,一个进程至少有一个线程,线程可以与
进程共享堆和方法区的资源,但线程拥有自己的局部变量,也就是说拥有自己的栈区,
由于它是与进程共享内存,不像进程那样拷贝内存空间,这使得多个线程来回切换时,
负担小的许多,这也时线程的优势,如果我们之前的网络银行用线程会变得方便许多,
就不用反复的读取文件和给文件上锁,因为线程与进程的内存空间部分是共享的,
只需对部分竞争内容上锁就行了,这个就先聊到这,
到时候我会重新写一篇,用线程写的网络银行.
2.生成线程
int pthread_create( //用该函数生成的线程结束时,是否会自动释放内存跟第二个参数相关pthread_t *thread, //线程idconst pthread_attr_t *attr,//线程属性,默认为NULL时,为未分离属性,需要手动释放系统资源 void *(*start_routine) (void *),//线程开始从start_routine开始运行void *arg //如果线程需要形参,则需要传递,否则可为NULL);
3.等待线程结束,并释放资源
int pthread_join(调用这个函数时,除非等待的id线程结束,否则调用该函数的线程会处于阻塞pthread_t thread, //所需要等待的线程idvoid **retval //线程结束所需要保存的返回值);该函数只能对非分离的线程使用,且该线程调用时只是释放系统资源,如果申请了malloc资源则需要手动释放