自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Linux下 线程优先级 和 线程调度策略 设置

参考连接:https://blog.youkuaiyun.com/weixin_44845857/article/details/118409858。

2024-03-14 20:19:47 2815 1

转载 Linux进程间通信

一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见。本系列文章阐述了 Linux 环境下的几种主要进程间通信手段。

2024-01-22 20:04:01 481

转载 【嵌入式开发-多线程同步】

条件变量是利用线程间共享的全局 变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;条件的检测是在 互斥锁的保护下进行的。如果另一个线程改变了条件,它发信号给关联的条件变量,唤醒一个或多个等待它的线程,重新获得互斥锁,重新评价条件。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。为了协调线程之间的制约关系引入了线程同步的概念(线程间的通信主要是用于线程同步,所以线程没有进程通信中用于数据交换的通信机制)。

2023-09-03 20:55:34 262

原创 线程锁和读写锁

当一个线程要访问临界区时,会对该临界区进行加锁。在没有解锁之前其他线程要对临界资源访问,则这些线程会被阻塞睡眠,直到解锁。如果解锁时有一个或多个线程阻塞,那么这些睡眠的线程会变成就绪状态,然后第一个变为就绪状态的线程就会获取临界区的使用权,并且再次加锁,其他线程继续阻塞等待。

2023-09-02 18:31:11 171

原创 细谈野指针

野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)

2023-06-10 22:44:14 151

原创 TCP的可靠性

应用数据被分割成TCP认为最适合发送的数据块。(这和UDP完全不同,应用程序产生的数据报长度将保持不变)。确认响应:对于一个收到的请求,将发送一个确认。这个确认通常要延迟几分之一秒。超时重传: 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。TCP给发送的每一一个包进行编号 ,接收方对数据包进行排序,把有序数据传送给应用层。

2023-06-04 22:07:02 203

转载 UDP编程模型

UDP 循环服务器模型。server.c 代码。

2023-05-28 16:27:16 120

转载 TCP编程模型

TCP编程模型一般如下TC编程模型分为客户端和服务端,两者编程流程如下:TCP服务端流程TCP客户端流程。

2023-05-27 14:50:48 220 1

原创 static关键字

c.静态成员变量的访问:类名::静态成员变量名 或 对象.静态成员变量名。b.静态成员函数不能调用非静态成员函数。而非静态成员函数可以调用静态成员函数。a.静态成员函数没有this指针,不能访问非静态成员(变量、函数)。a.静态成员变量需在类中声明,在类外定义(const修饰除外)。b.静态成员变量为所有类对象共享,并没有包含在具体的对象中。a.变量的储存区域在全局数据区的静态常量区。b.变量的作用域由当前程序变为整个文件。a.函数的作用域由当前程序变为整个文件。a.储存区由栈变为静态变量区。

2023-05-21 22:03:40 120 1

转载 Socket网络编程基础

本机进程所使用进程号来区分不同的进程。进程间的通信方式有管道、信号、消息队列、共享内存、信号量等。而网络中进程间通信,首先需要知道进程所在的主机,即网络中唯一的标识即网络层的IP地址,主机上的进程可以通过传输层的协议和端口号识别。

2023-05-21 21:27:42 1958 1

原创 结构体和共用体的区别

结构体和共用体的主要区别在于存储方式的不同。

2023-05-14 14:26:14 383

转载 回调函数中同步回调和异步回调的区别

如果用户层B把函数的指针(地址)作为参数传递给底层驱动A,当这个指针在A中被用为调用它所指向的函数时,我们就说这是回调函数。第一种方法B是无法知道数据d何时会发生变化,只有B自己定时去读取或者在需要的时候去取数据。第二种方法是A在数据发生变化后主动将数据告诉B,效率比第一种高。其实回调函数就是一个通过。

2023-05-14 10:38:36 544

原创 C语言中字节对齐

在现代计算机中,内存空间都是按照字节划分,理论上可以从任何起始地址访问任何变量,但是在实际中访问特定变量时经常在特定的内存地址中的访问(例如访问结构体中的指定变量),这时就需要各种数据类型按照一定的规则在内存中存放,而不是一个一个顺序的存放,这就是对齐。

2023-05-03 19:04:29 188

原创 内联函数 —— C 中关键字 inline 用法解析

在C语言中,调用函数时,会进行函数入栈 ,执行,函数出栈的操作。这些操作执行都需要时间,并且函数入栈出栈 ,会消耗栈内存或栈空间。对于一些频繁调用且代码段不多的函数来说,在入栈出栈时占用很多时间和栈内存。为了解决这个问题,C语言引入了inline修饰符,表示为内联函数。看下面的例子这个就是内联函数的用法;在程序编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来进行替换。这样做会增加目标程序的代码量,但是在执行过程中就没有函数入栈出栈的操作,减少了程序的执行时间。

2023-04-23 22:03:47 780 1

原创 static关键字

链接属性external的变量,所有源文件中的所有函数都可以访问他。只要变量并非声明于代码块内部或者函数定义内部,他在缺省情况下的链接属性即为external。如果一个变量声明于代码块内部,在他前面添加extern关键字将使它所引用的是全局变量而非局部变量。

2023-04-22 22:02:17 79 1

原创 typedef 和define 的区别

define 没有作用域的限制,只要是之前预定义过的宏,在以后的程序中都可以使用。如果需要解除掉之前声明的宏定义。可以使用 #undef name,这个命令使预处理器忘记name的所有宏定义。typedef 通常用于 类型定义,比如指针,数组,结构体等。

2023-04-22 20:39:18 2466 1

原创 【mod_sofia模块源码阅读】

mod_sofia模块在freeswitch中用于SIP通话,所以理解该模块对用于处理通话的问题还是很有帮助的freeswitch 版本为1.6.20一、 模块加载首先看模块的加载函数其宏定义的原型在switch_types.h中#define SWITCH_MODULE_LOAD_ARGS (switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool)#define SWITCH_MODUL

2022-04-16 21:39:25 3560

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除