- 博客(5)
- 收藏
- 关注
原创 [C/C++] 线程池的简单实现
1.何为线程池。把线程池想象成食堂打饭阿姨,每一份饭对应一个线程,线程池的作用便是像打饭阿姨一样在没人的时候等待,一旦有人刷卡(任务到来),阿姨便分发餐盘打菜(分配线程),吃完后再回收餐盘(回收线程)继续等待。当然,阿姨一怒之下也可以把餐盘摔了(结束线程)。当然可能同时有几个窗口(临界资源)进行打饭,所以不可避免的要加锁。2.线程池的作用。个人理解,线程池起到一个缓冲区的作用,等需要的时候从池子里拿,不要再放回,避免线程创建销毁的过渡开销,同时对线程起到一个管理作用。已经很重要的起到异步解耦(异
2022-02-28 17:10:16
447
原创 【C/C++】 实现strcpy并考虑内存重叠
d1.当我们想对一个字符串实现自我复制时使用strcpy函数会发现出现出入。按理来说字符串应该更改为hhello。2.重写strcpychar * mycpy(char *dst, const char * src){ assert(dst != NULL); assert(src != NULL); char *ret = dst; while((*dst++ = *src++) != '\0'); return ret; ..
2022-02-23 11:45:59
876
原创 Linux c 基于TCP实现简单的文件服务器
关于TCPTCP协议作为传输层另一常用协议,强调传输数据的正确性,而一些文件传输并不需要过分追求实时性,而想要确保收到的文件没有损坏,想象一下,你发表一篇论文如果采用不可靠(相对)的UDP协议,假如其中一个公式的一个符号丢失或改变都将影响整篇论文。所以,在面对一些重要文件传输时因选择TCP,而音乐,视频等可以接受一定的损坏,可能只是丢几帧,并不影响整体体验,采用代价更小的UDP更好,以下代码仅考虑TCP。文件传输文件传输无非是把文件中所以数据拷贝到另一个空白文件当中,...
2022-01-13 14:45:41
1939
6
原创 【C++】到底在声明中还是定义中指定默认参数
C++在定义函数时可以给形参设置一个默认值,设置了默认值的形参称为默认参数。函数调用时默认参数不必赋值也可使用,此时函数内部将使用预设值,如果传入了参数,默认参数将会被替换。但是在声明时指定和定义时指定默认参数会有一些需要注意的点。首先,如果一个形参被指定了默认参数,那么这个形参之后的形参都需要指定默认参数。如图当给c指定默认参数后其次,函数可以进行多次声明,而声明多次都可以给不同形参指定默认值。结果与上例相同,但注意两次声明指定参数的次序,由于前面的因素,...
2022-01-13 11:27:06
3327
3
原创 Linux c 基于UDP实现简单的多人聊天室
1.数据报格式套接字数据报格式套接字(代码为SOCK_DGRAM),采用此方法计算机只管发送数据而不去验证发送数据的正确性,不论传输是否被接收,数据流是否有丢失,都不再重新发送,特征如下:1.强调快速传输而非传输顺序;2.传输的数据可能丢失也可能损毁;3.限制每次传输的数据大小;4.数据的发送和接收是并发的。总之,数据报套接字是一种不可靠的、不按顺序传递的、以追求速度为目的的套接字。以上总结于套接字有哪些类型?socket有哪些类型?2.采用UDP协议而数据报套接字采
2022-01-11 18:29:32
3573
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人