- 博客(34)
- 收藏
- 关注
原创 线程池|单例模式|STL、智能指针线程安全|读者写者问题
在设置获取单例对象的函数的时候,注意要设置成静态成员函数,因为在获取对象前根本没有对象,无法调用非静态成员函数(无this指针):
2023-09-08 15:14:44
396
原创 基于循环队列和信号量的生产和消费者模型
在我们访问公共资源的时候,消费者需要竞争同一把锁,然后还要继续判断是否能在临界区中生产数据。如果竞争到了锁然后判断不能生产数据,则需要继续等待。竞争锁需要消耗时间,判断等待也需要,这就导致了程序效率的低下。因此信号量的存在就解决了这一个问题:在竞争锁之前就提前预知了临界资源是否就绪。
2023-09-06 17:12:18
157
原创 基于blockqueue的生产和消费模型
这个模型的优势不在于多个线程能够并发式的对共享资源里面的数据进行访问和处理,而是多个线程能够在加载任务和处理任务的时候进行并发处理。在我们上面的代码逻辑中很简单,就是随机构造x和y构成一个任务最后放入阻塞队列中。而在实际情况中加载任务的时候没有那么简单,有时需要从网络或者数据库中加载,这就需要消耗很长的一段时间。这个模型的优势就是在于多个生产者能同时加载多个任务,随后竞争出一名生产者将任务放入共享资源(阻塞队列)中,然后在竞争出一名消费者取出任务。
2023-09-05 19:02:47
585
原创 Linux线程篇(上)
今天为大家讲一讲Linux中的线程。这部分的知识细节比较多,篇幅可能较长,但我们一步一步将每一个知识点搞清楚,Linux线程对我们来说就小菜一碟啦!
2023-05-19 17:15:41
189
原创 Linux进程通信之管道通信
我们都知道,进程之间都是相互独立的,为了实现进程间能够互相传输数据便有了进程间通信。进程间通信分为三类,第一类是基于文件系统的管道通信,第二类是基于system v标准的本地通信,第三类是基于POSIX标准,能够实现跨主机的通信。今天我们所要探讨的是第一大类在认识管道通信之前,我们得先知道什么是管道。
2023-04-30 11:46:18
141
原创 Linux动静态库
程序在编译链接的时候将库中的代码链接到可执行文件中。程序运行的时候不再需要静态库。程序在运行的时候链接库中的代码,多个程序共享使用库的代码。
2023-04-20 21:54:04
153
原创 C++红黑树的原理及实现
RED,BLACK,:_kv(kv){}在构造函数中,为什么把颜色默认设置成红色?因为红色是一种安全的做法,如果插入的结点是黑色的,那么它必定违反性质1。而插入红色结点不一样,如果插入节点的父节点是黑色的,那么插入就不会违反上面性质。所以这是一个概率问题,很明显插入黑色结点出现问题的概率比插入红色结点要高得多。
2023-04-18 16:52:53
70
原创 整数及浮点数在内存中的存储
整数的存储: 计算机中的整数有三种表示方法:原码、反码、补码。整数都是用其补码存储内存中。其中正数的原反补码相同,负数的原反补需进行转换,转换规则如下:反码是将原码的符号位不变,其余二进制位按位取反。补码是反码的二进制位+1.。为什么整数存储在内存中的是补码形式? 因为在进行加减法的时候,cpu只能处理加法而不能处理减法计算(cpu只有加法器),并且原码和反码转换方式相同,不需要额外的硬件电路。大端小端的介绍: 当我们知道整数是用补码存进内存的,那它是怎么...
2022-05-29 15:23:44
170
原创 游戏实现——扫雷
相信大家都玩过扫雷吧,康康最近学习了如何用c语言代码实现该游戏,接下来就由康康向大家娓娓道来吧!1.打印出游戏的菜单void menu1(){ printf("*************************\n"); printf("********1.play***********\n"); printf("********0.exit***********\n"); printf("*************************\n");}int main()
2022-05-07 21:23:31
815
原创 三子棋游戏的实现
想成为大师的康康最近想玩游戏,于是用c语言代码敲了个三子棋供自己娱乐消遣。虽在创作的过程中遇到了许多细节上的问题导致运行并没有那么成功,但康康意志坚定,鏖战了几小时终于创作成功!接下来是康康的心得体会,满满的干货喔~~~ 话不多说进入正题,教会大家如何用c语言代码实现三子棋游戏。...
2022-04-26 21:59:43
2604
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人