- 博客(22)
- 收藏
- 关注
原创 Linux: mutex
首先,会自动释放传入的互斥锁(_mutex),这样其他等待该锁的线程可以获得锁并访问共享数据。:然后,线程会阻塞并等待条件变量被其他线程发出信号(通过或:当条件变量被触发后,返回之前,它会重新获得之前 释放的互斥锁(_mutex这是为了确保在检查条件(即为什么线程被唤醒)时,共享数据不会被其他线程修改。在使用。
2024-11-26 15:29:19
333
原创 Linux进程替换
后者execv中的 v 可以认为是vector的缩写,由数组连续起来的 (代表像数组一样一起传入)前者execl中的 l 可以认为是 list的缩写,由链表串起来的 (代表参数一个一个传入)进程替换是创建新进程吗?No,只是覆盖代码和数据,内核数据结构(PCB)并没有变!运行到execl函数时,程序会被替换,所以后面的代码没有执行。成功:没有返回值,会被覆盖。
2024-11-25 16:26:20
314
原创 Linux退出码进程等待
刷新缓冲区是指在程序执行过程中,将缓冲区中的数据发送到目标设备(如显示器、文件等)并清空缓冲区的过程。缓冲区是一块用于暂时存储数据的内存空间,它可以在数据读写过程中提高效率,减少I/O操作的次数。然而,这也可能导致数据在缓冲区中滞留,直到满足特定条件(如缓冲区满、遇到换行符、程序主动刷新等)时才会被输出或处理。pid>0 ------- 子进程;pid=0 ------- 父进程;pid<0 -------创建进程异常。
2024-11-22 11:19:33
687
1
原创 initializer_list
用一串实体类型初始化对象,用initializer_list类它自带迭代器begin,end,存进去的有first,last两个指针,所以sizeof(i1)= 8;
2024-07-04 17:52:02
174
原创 C++动态内存管理
/创建一个变量并初始化为10。//创建10个变量未初始化;对于自定义类型malloc不能通过访问私有成员进行初始化,对于内置类型malloc和new区别不大;而new可以调用默认构造函数进行初始化;若后面加上{}则初始化为0;
2024-04-22 21:24:36
188
原创 const
int * const --> 指针的地址不能变,指向的内容可以变;const int * -->指针的地址可以变,指向的内容不能变;总结:看 * 和 const 谁在前面,谁不能变;const 成员才能调用 const 函数。
2024-04-15 16:18:44
222
1
原创 冒泡排序,选择排序,希尔排序,堆排序,快排,归并排序,计数排序
/冒泡排序j < n - 1;j++)i++)// 插入排序i < n - 1;i++)int end=i;end--;elsebreak;// 希尔排序gap /= 2;i++)end -= gap;elsebreak;
2024-03-20 16:46:38
285
1
原创 大端和小端
由上图我们可以先取出1的地址然后强制转换成char*类型判断是否等于就可以。小端模式:数据的低位字节,存放在低地址中;数据的高位字节,存放在高地址中。计算机读取数据的方向,是从高地址开始读取的;大端模式:数据的低位字节,存放在高地址中;数据的高位字节,存放在低地址中。计算机读取数据的方向,是从低地址开始读取的;
2024-01-23 17:21:37
567
1
原创 浮点数在内存的存储
⼗进制的-5.0,写成⼆进制是 -101.0 ,相当于 -1.01×2^2。那么,S=1,M=1.01,E=2。对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字。⼗进制的5.0,写成⼆进制是 101.0 ,相当于 1.01×2^2。• (-1)^S表⽰符号位,当S=0,V为正数;那么,按照上⾯V的格式,可以得出S=0,M=1.01,E=2。• M表⽰有效数字,M是⼤于等于1,⼩于2的。要理解浮点数在计算机内部的表⽰⽅法。• 2^E表⽰指数位。
2024-01-22 22:28:53
379
原创 C语言运算符之^ ^的学习
^嘿嘿是不是比较可爱,接下来让我们来了解了解这个可爱的玩意儿!整数与整数之间的运算示例:3^-5对应二进制位进行异或运算相同为0相异为1。
2024-01-20 20:16:19
730
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅