LINUX_C 线程总结(一)
来源:互联网 发布:淘宝买东西优惠 编辑:程序博客网 时间:2024/06/07 11:35
LINUX_C 线程总结(一)
首先来说说我所理解的线程:
但是谈线程又不得不得提一下进程,程序,这三者的联系
或许弄清楚这三种的联系之后,我们或许能够更好的来对这些系统级的实体有一个更加深刻的认知。
- 程序,进程,线程这三者之间的关系?
简单来说,一程序可以调用多个进程,比如一个视频播放器程序,里面就存在两个进程:一个是播放视频的进程,一个是下载上传视频的进程。
一个进程又同时调用多个线程,
这个线程是隐藏的,用进程管理器看不到,可用其它的进程管理软件来查看。
三者的逻辑关系是程序调用进程,进程调用线程,一般来说程序下面都是多进程,不同的进程分工不同;进程下面也基本上是多线程的。
可以这样下定义:进程是系统进行资源分配和调用的独立单位,每一个进程,都由它自己的内存空间和系统资源
线程是进程的执行单元,执行路径,线程也是程序使用CPU的最基本单位
学习过程中都能踩了那些坑
i.首先, 就是线程创建函数
c
include
这函数比较坑的一点就是实际用到的时候他的第2,4,项参数是null,那么问题来了,我想给新开线程从此函数传参怎么办,答案是第四项是参数,传入他的指针。别在第三项哪里传。传的时候务必注意指针类型问题,先强转再传,就不会产生警告,后转会产生,这是因为指针字节与你所要转的大小不同,地址资源浪不匹配。就是( 指针函数与函数指针的简单区别):指针函数:int *f(int a, int b);函数指针:int (*f)(int a, int b);>ii线程的属性超级多 他被包含在一个结构体里边, 有时候创建线程的时候也会用到
typedef struct
{
int detachstate; 线程的分离状态
int schedpolicy; 线程调度策略
struct sched_param schedparam; 线程的调度参数
int inheritsched; 线程的继承性
int scope; 线程的作用域
size_t guardsize; 线程栈末尾的警戒缓冲区大小
int stackaddr_set;
void * stackaddr; 线程栈的位置
size_t stacksize; 线程栈的大小
}pthread_attr_t;
>iii.线程终止问题,那种好一些线程有好几种退出方式,1.return 返回2. #使用pthread_exit()函数:有两种特殊情况要注意,>1 主线程中,如果从main 函数中返回或者调用了exit函数退出主线程, 则整个进程也会终止,进程实则是主线程, 则整个进程就会终止。>2 是主线程调用pthread_exit 函数 ,则仅仅是主线程消亡,进程不会结束,进程内的其他线程也不会终止,直到所有线程结束,进程才会结束。》》》主要是退出函数的选择问题 ,具体用到的时候要特别注意。3. #线程的资源释放问题> 线程不会主动释放资源,所以系统提供了两个函数 ``````<div class="se-preview-section-delimiter"></div>#include <pthread.h>1.void pthread_cleanup_push(void (*routine)(void *), void *arg);2.void pthread_cleanup_pop(int execute);
这在系统中是一个以宏的形式给出的所以必须成对出现
下一篇会介绍线程同步问题
- LINUX_C 线程总结(一)
- LINUX_C 线程总结(二)
- 线程同步(Linux_C++)
- 线程创建与终止(Linux_C++)
- #小码农的一天#LINUX_C 进程控制总结
- 线程总结一
- 线程总结(一)
- 线程总结(一)
- linux_c 开发(6-1)多线程程序设计_线程基础
- 线程学习总结(一)
- java线程安全总结 (一)
- java线程安全总结(一)
- MYSQL线程池总结(一)
- Java线程总结(一)
- java线程总结(一)
- 线程安全总结(一)
- 总结:Android中的线程,线程池相关(一)---线程
- linux_c学习
- 24循环结构
- 剑指offer:链表中倒数第K个结点
- 入离职管理系统——使用注解实现依赖注入
- arm交叉编译器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi区别
- TensorFlow学习笔记(十二)TensorFLow tensorBoard 总结
- LINUX_C 线程总结(一)
- matlab中的max函数
- 常用正则表达式大全
- Linux学习笔记
- Spring学习(四)-Bean集合属性
- TabLayout+Xlistview+第三方登录
- Python中字符串、列表的基本操作
- 【LeetCode】005.Longest Palindromic Substring
- 19 Three.js实现雾化效果