- 博客(17)
- 收藏
- 关注
原创 发布订阅模式 Vs 观察者模式
综上所述,发布者-订阅者模式更注重于解耦发布者和订阅者,通过消息代理来进行消息传递;而观察者模式更注重于主题对象和观察者之间的依赖关系,主题对象状态变化时直接通知观察者。选择哪种模式取决于具体的应用场景和需求。
2024-05-13 09:38:19
351
原创 Windows下gcc -m32出错
今天要编一个windows 32bit的库文件,结果在使用gcc -m32选项的时候一直报错,上网找了一堆教程,也没有解决掉。在线安装有时候特别慢,打个包上传到百度网盘了,有需要可以自行下载。更新了一下mingw安装包,参考。
2024-02-29 23:10:02
1229
4
原创 曲线半径与车速之间的关系
为了确保行车安全,设计时会根据道路的设计速度来选择一个合适的最小曲线半径,以限制车辆在曲线处的侧向加速度不超过一定的安全值。通常,这个安全值的上限在道路设计规范中会有所规定,比如不超过0.1g到0.15g(g是重力加速度,约为9.81m/s²)。此外,道路设计规范提供的曲线半径和车速之间的对应关系表或图表,可以直接用来指导设计,以满足安全、舒适和经济的需求。这意味着在一定的侧向加速度(或司机感觉到的侧向力)限制下,车辆以更高的速度通过曲线,需要一个更大的曲线半径。
2024-02-24 15:36:29
3772
原创 读写锁(pthread_rwlock)提高并发
每个读线程在读取计数器值时使用pthread_rwlock_rdlock()获取读锁,而写线程在修改计数器值时使用pthread_rwlock_wrlock()获取写锁。其核心特点在于允许多个线程同时进行读取操作,但在任何时刻只允许一个线程进行写操作,并且写操作时不允许有读操作或其他写操作同时进行。综上所述,读写锁的设计使得在读多写少的场景下,可以显著提高程序的并发性能,但它的使用和管理也比单纯的互斥锁更为复杂。:一旦有线程正在进行写操作或等待进行写操作,读线程将无法获取读锁,必须等待写操作完成。
2024-02-05 21:10:41
597
1
原创 QNX声音架构(QSA)入门指南
QNX声音架构(QSA)是QNX操作系统中用于处理音频输入和输出的高级、多功能音频框架。它提供了灵活的音频处理功能,包括音频捕获、播放、混音,以及与多种音频硬件的接口支持。QSA的设计旨在满足高性能和低延迟音频处理的需求。
2024-01-29 17:37:30
1428
原创 QNX声音架构(翻译)
要重新配置音频流,您必须调用 snd_pcm_plugin_params() 或 snd_pcm_channel_params(),然后调用相应的 snd_pcm_plugin_setup() 或 snd_pcm_channel_setup() 函数。因此,请确保在写入音频数据之前,您在进行 snd_pcm_*_params() 调用后,调用 snd_pcm_*_setup() 和 snd_pcm_*_prepare() 函数。随着同时混合的音频流数量的增加,溢出的程度和频率也会增加。
2024-01-29 17:34:54
2494
原创 代码的时间复杂度
在进行算法学习的时候都会追求高效的算法,刚入门的时候可以根据最笨的方法进行算法,然后再持续优化。时,执行所需时间的增长速度。时间复杂度用大O符号表示,表示算法的。当谈论代码的时间复杂度时,我们通常关注的是算法在。
2024-01-21 11:15:16
579
1
原创 C++的dynamic_cast
是 C++ 中的一种类型转换操作符,主要用于在运行时进行安全的类型转换。它通常用于处理多态类型,即基类和派生类之间的关系。在运行时检查指针或引用是否可以安全地转换为目标类型,如果可以,则执行转换,否则返回空指针或引用。
2024-01-14 22:59:09
2186
1
原创 Visual Studio Code C++编译
在Visual Studio Code (VSCode)中,您可以使用不同的编译器和构建工具来编译C++文件。一个常见的选择是使用Microsoft的C++扩展和MinGW-w64(适用于Windows)或GCC(适用于Linux)编译器。文件以适应您的编译器和项目要求。上述示例使用的是g++编译器,您可能需要根据您的情况进行调整。
2024-01-14 22:00:51
1278
1
原创 数据结构-环形缓冲区 ring buffer
环形缓冲区(Circular Buffer),也称为循环缓冲区或环形队列,是一种常见的数据结构,通常用于在计算机科学和嵌入式系统中实现数据的循环存储。环形缓冲区的特点是固定大小的缓冲区,在缓冲区的尾部写入新数据时,如果到达缓冲区的末尾,则会绕回到缓冲区的开头,形成一个循环。以下是一个简单的环形缓冲区的例子,使用C语言实现。环形缓冲区的概念常常用于实现循环队列,例如,在计算机网络中,可以使用环形缓冲区来管理数据包的接收和发送。当缓冲区的尾部到达物理存储的末尾时,新的数据将从缓冲区的开头重新开始,形成循环。
2024-01-08 19:13:16
661
1
原创 如何使用C++编译DLL和SO
编译C++为动态链接库(DLL - Dynamic Link Library)或共享对象(SO - Shared Object)是将C++代码打包为可供其他程序调用的可。
2024-01-07 13:28:16
947
1
原创 pthread_create 介绍
类型,可以得到传递的结构体参数,然后在新线程中使用这些参数。这样,就可以通过结构体传递多个参数给新线程。函数是 POSIX 线程库(Pthreads)提供的函数之一,用于创建一个新的线程。的作用是创建一个新的线程,并将执行流程从调用它的地方分离出去,使得新线程能够独立执行指定的。的指针,因此可以用来传递任何类型的数据。函数用于等待新线程的结束,确保在主线程结束之前新线程已经完成。传递参数给新创建的线程。的结构体,用于封装传递给新线程的参数。新线程开始执行后,它的执行将从。创建了一个新线程,执行了。
2024-01-07 10:24:04
953
1
原创 pthread_join函数介绍
主线程可以等待其他线程完成工作,确保线程的协同工作。在等待期间,主线程可以做一些其他的工作,或者直接等待其他线程的终止。等待子线程的终止,并获取子线程的返回值。这样可以确保主线程在子线程执行完毕后再继续执行。来等待另一个线程时,调用线程将阻塞,直到指定的线程完成执行。获取目标线程的返回值,主线程可以获取到目标线程的执行结果。函数用于等待一个指定的线程终止。这个函数是多线程编程中常用的同步机制之一。在这个例子中,主线程创建了一个子线程,然后调用。下面是一个简单的示例,演示了。
2024-01-07 10:16:48
1063
1
原创 QNX IPC同步消息传递 Synchronous message passing
同步消息传递在QNX Neutrino RTOS中扮演着主要的进程间通信角色。这种通信机制通过MsgSend()和的交互,有效地将不同线程和进程连接在一起,构建了一个协调有序的系统。下面我们将深入了解这一同步通信的运作机制。
2024-01-07 10:01:05
573
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人