- 博客(10)
- 收藏
- 关注
原创 浮点数比较大小
float 类型不能比较相等或不等,但可以比较>,<,>=,<=用==从语法上说没错,但是本来应该相等的两个浮点数由于计算机内部表示的原因可能略有微小的误差,这时用==就会认为它们不等。应该使用两个浮点数之间的差异的绝对值小于某个可以接受的值来判断判断它们是否相等,比如用 if (fabs(price - p) < 0.000001)来代替 if...
2019-05-31 18:46:57 8800 1
原创 用数组名作函数参数
关于用数组名作函数参数有两点要说明:(1) 如果函数实参是数组名,形参也应为数组名(或指针变量),形参不能声明为普通变量(如int array;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。(2) 需要特别说明的是: 数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。...
2019-05-31 18:46:10 12891
原创 Linux 共享库命名规则
linux 里面共享库总是存在很多链接文件lrwxrwxrwx. 1 root root 24 Aug 19 2017 libavahi-client.so.3 -> libavahi-client.so.3.2.9-rwxr-xr-x. 1 root root 69968 Nov 5 2016 libavahi-client.so.3.2.9lrwxrwx...
2019-05-31 18:45:19 887
原创 静态库和共享库(动态链接库)的区别
1 静态库在共享库出现之前,公用功能是以静态库的形式存在的,它把通用功能模块的多个目标文件打包在一起,用到它的程序只需要在链接时指定这个库文件,链接器就会从这个库中抽取出用到的功能代码拷贝到目标程序中,而不需要每次都对这些通用功能代码重新编译。静态库体现出了很好的模块化思想,但是随着计算机产业规模的发展,静态库逐渐暴露出了自身两个比较严重的问题。一是磁盘和内存空间占用大。静态库虽然加快了编...
2019-05-31 18:44:41 4215
原创 进程内存布局
进程访问的地址是自己进程空间内的线性地址,内核负责把线性地址映射为实际的物理地址。操作系统以内存页为单位管理物理内存。在 Linux 中,默认的内存分页大小是 4KB,也就是说,操作系统把物理内存分割成一个个大小为 4KB 的格子,进而管理它们,内存的换入换出也以这样的格子为基本单位。在每个进程的内核数据结构中,都会维护一个内存页表,记录线性地址到物理内存页的映射关系。...
2019-05-31 18:43:54 138
原创 pthread线程库函数
所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。1 创建线程创建线程的函数如下:int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void...
2019-05-31 18:43:14 2548
原创 线程的连接和分离
新创建的线程和进程一样,也需要被连接以监听其退出状态,否则也会变成僵尸线程。背后原因与进程一样,其退出之后,内核会为它保留退出状态数据,直到有人取走为止。连接线程的库函数如下所示:int pthread_join(pthread_t thread, void **retval);进程连接与线程连接在以下几个方面存在一些区别:任何线程都可以监听一个指定线程的退出,而不需要是创建该线程的线程...
2019-05-31 18:41:44 1652
原创 线程同步与互斥锁
相比多进程模型,多线程模型最大的优势在于数据共享非常方便,同一进程内的多个线程可以使用相同的地址值访问同一块内存数据。但是,当多个线程对同一块内存数据执行“读−处理−更新”操作时,会由于线程的交叉执行而造成数据的错误。例如以下代码段,当 thread_func() 同时在多个线程中执行时,更新到 glob_value 中的值就会互相干扰,产生错误结果。#define LOOP_COUNT ...
2019-05-31 18:41:00 555
原创 进程的终止
正常终止一个进程可以用 _exit 系统调用来实现,原型为:void _exit(int status);其中的 status 会返回 wait() 类的系统调用。进程退出时会清理掉该进程占用的所有系统资源,包括关闭打开的文件描述符、释放持有的文件锁和内存锁、取消内存映射等,还会给一些子进程发送信号(后面课程再详细展开)。该系统调用一定会成功,永远不会返回。在退出之前,还希望做一些个性化的...
2019-05-31 18:39:11 493
转载 学习-> 积累-> 大牛
学习是什么?为什么要学习?如何学习?抓住重点学习。什么是重点?能解决你的问题,那就是重点,所以要明确问题是什么(目的是什么),东西是学不完的。积累是什么?为什么要积累?怎么积累?记录关键点。站在巨人的肩膀上思考问题才更有效。从前者的代码和思路中得到的。大牛是什么?为什么是大牛?怎么成为大牛?主动对关键点进行用和修改。就是主动思考的过程。看的目的是理解并提取核心点并记录并会用和修...
2019-05-20 19:43:00 181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人