Linux
文章平均质量分 77
Geek之路
这个作者很懒,什么都没留下…
展开
-
线程同步学习
线程同步不是一起、相同,而是协调、协同的意思。1)按预定的先后次序进行运行,如:您说完,我再说;线程A生成数据后交给线程B处理;2)公共资源同一时刻只能被一个线程使用;共享数据在同一时刻只能被一个线程修改,以保证数据的完整性。线程安全的3大特性1、原子性原子性是指操作是不可分的。其表现在于对于共享变量的某些操作,应该是不可分的,必须连续完成。2、可见性可见性是指一个线程对共享变量的修改,另外一个线程能够立刻看到;基于互斥锁、条件变量、信号量、自旋锁、读写锁。原创 2024-08-27 11:54:02 · 427 阅读 · 0 评论 -
多进程比多线程开销大的原因
综上所述,多进程比多线程开销大的原因主要包括资源分配与回收的复杂性、上下文切换的开销、进程间通信的复杂性。然而,需要注意的是,在某些情况下(如需要高隔离性、高稳定性或利用多核CPU并行计算时),多进程可能是更好的选择。因此,在选择使用多进程还是多线程时,需要根据具体的应用场景和需求来权衡利弊。原创 2024-08-26 19:47:21 · 190 阅读 · 0 评论 -
Linux TCP多线程服务器
假设两个核心1,2,4个任务a,b,c,d,ab分配给了核心1,cd分配给了核心2,此时ab就是并发,cd也是并发,a与c就可以并行,b与d也可以并行。假如进程是一个文档编辑器,存放着相应的程序和文档,现在用户用键盘敲下回车,交互的程序接收键盘的按下事件,布局的程序将文字重新排布渲染出来,另外每隔一段时间,写入的程序保存文档到硬盘中,所以这三个程序最好能并行执行,但他们又需要访问修改同一个文档,所以肯定是在同一个进程中,所以现在需要更轻量级的3个线程,交互线程, 渲染线程,保存线程。原创 2024-08-25 16:56:19 · 962 阅读 · 0 评论 -
堆栈的初步理解
那么什么时候可以回收呢,显然只有使用这块内存的程序员自己知道,也就是说 如果程序员不去释放内存,那么在任何函数中,都可以使用这块内存或者这个变量,这些变量占据的内存就是堆区。当变量出现在函数后就会出现一个问题,那就是变量的使用范围或者生命周期仅仅是函数内部还是超越函数,如果一个变量仅仅在函数内部,那么当函数结束后,这个变量占据的内存就可以进行销毁了,这就是局部变量。栈区的内存管理无需程序员关心,实际上栈区是非常好管理的,栈区的内存申请和释放是非常有规律的,先来的后释放,遵循栈的顺序。栈区和堆区大小一样吗。原创 2024-08-25 10:47:20 · 319 阅读 · 0 评论 -
Linux系统编程全面学习
一种可执行的二进制文件,编译好的代码。使用库可以提高开发效率Linux库分为静态库和动态库静态库:静态库在程序编译的时候会被链接到目标代码里面。所以我们的程序运行就不再需要该静态库了。因此编译出来的体积就比较大,静态库以lib开头.a结尾(10个程序都需要某个静态库,编译的时候就需要链接10次,不太方便)动态库: 动态库(也叫共享库)在程序编译的时候不会被链接到目标代码里面,所以我们的程序运行就需要该动态库。因此编译出来的体积就比较小。静态库以lib开头.so。原创 2024-08-22 19:58:10 · 1227 阅读 · 0 评论