- 博客(4)
- 收藏
- 关注
原创 关于定时器
通过定时器可以实现给服务器注册定时事件,这是服务器上经常要处理的一类事件,比如3秒后关闭一个连接,或是定期检测一个客户端的连接状态。定时事件依赖于Linux提供的定时机制,它是驱动定时事件的原动力,目前Linux提供了以下几种可供程序利用的定时机制:1. alarm()或setitimer(),这俩的本质都是先设置一个超时时间,然后等SIGALARM信号触发,通过捕获信号来判断超时2. 套接字超时选项,对应SO_RECVTIMEO和SO_SNDTIMEO,通过errno来判断超时。
2023-08-27 10:32:13
44
原创 协程笔记汇总
与线程不同,线程创建之后,线程的运行和调度也是由操作系统自动完成的,但协程创建后,协程的运行和调度都要由应用程序来完成,就和调用函数一样,所以协程也被称为用户态线程。搞清楚协程和线程的区别。协程和函数的不同之处是,函数一旦被调用,只能从头开始执行,直到函数执行结束退出,而协程则可以执行到一半就退出(称为yield),但此时协程并未真正结束,只是暂时让出CPU执行权,在后面适当的时机协程可以重新恢复运行(称为resume),在这段时间里其他的协程可以获得CPU并运行,所以协程也称为轻量级线程。
2023-08-26 07:32:44
42
原创 理解指针/
指针是 C 语言的一个核心特色。它们以一种统一方式,对不同数据结构中的元素产生引用。对于编程新手(比如我),指针总是会带来很多的困惑,但是基本概念其实非常简单。在此,我们重点介绍一些指针和它们映射到机器代码的关键原则。函数指针的值是该函数机器代码表示中第一条指令的地址。
2023-08-25 22:12:11
32
1
原创 C语言联合union的进阶用法
不过,如果这样编码,就没有办法确定一个给定的节点到底是叶子节点,还是内部节点。许多计算机系统对基本数据类型的合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常是2、4或8)的倍数。在这种情况中,相对于给代码造成的麻烦,使用联合带来的节省是很小的。和联合的元素之间需要 4 个字节的填充,所以整个结构的大小为 4 + 4 + 16 = 24。类型的数据值,而每个内部节点都有指向两个孩子节点的指针,但是没有数据。,那么将这两个字段声明为联合的一部分,而不是结构的一部分,会减小分配空间的总量。
2023-08-22 04:50:54
106
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人