昱卿本卿
Preview Image

rust 语言介绍

rust 是一种现代的系统级编程语言,注重安全、并发和性能。它具有内存安全和数据竞争防止的特性,通过所有权系统和借用检查器来保证内存安全。rust 还支持并发编程,提供了轻量级的线程和消息传递机制。其语法简洁、表达力强,具有模式匹配、泛型和函数式编程等特性。rust 的目标是提供高效、安全和可靠的系统级编程体验,适用于开发操作系统、网络服务、嵌入式系统等领域。 优点 首先,它提供了内存安...

Preview Image

使用 tcpdump 抓包

tcpdump 是一个常用的网络抓包工具,用于监控和分析网络流量。它可以捕获经过网络接口的数据包,并以可读的格式显示各个字段的详细信息,如源IP地址、目标 IP 地址、端口号、协议类型等。tcpdump 支持多种过滤条件,可以根据需要选择特定的协议、IP 地址、端口等进行过滤,以便更精确地捕获和分析所需的网络流量。tcpdump 是网络管理员、安全专家和开发人员等的常用工具,用于故障排除、网...

Preview Image

使用 c++11 实现一个线程池

线程池是一种用于管理和复用线程的机制。它通过预先创建一组线程,并将任务分配给这些线程来提高程序的性能和效率。线程池可以避免频繁地创建和销毁线程,从而减少了系统资源的消耗。它可以控制并发线程的数量,避免资源过度占用,并提供任务队列来存储等待执行的任务。线程池还可以根据需要动态调整线程的数量,以适应系统的负载情况。通过使用线程池,我们可以更好地管理线程的生命周期,提高程序的稳定性和可维护性。 ...

Preview Image

std::recursive_mutex 简单用法

std::recursive_mutex 是 c++ 标准库中的可递归互斥量,它与 std::mutex 类似,但允许同一个线程多次对互斥量进行加锁操作,而不会导致死锁。这意味着线程可以在持有互斥量的情况下再次对其进行加锁,而不会被阻塞。递归互斥量非常适用于需要在嵌套函数或递归调用中使用互斥量的情况,确保线程安全性的同时保持灵活性。话不多说,看下面这种情况: std::mutex mtx;...

Preview Image

采用 std::atomic_flag 实现自旋锁

std::atomic_flag 是 c++ 标准库中的原子标志类,用于实现基本的原子操作。它提供了一种简单的机制来保护共享资源,可以用于实现自旋锁和其他线程同步的机制。std::atomic_flag 只能表示两个状态:设置(set)和清除(clear),并且保证对它的操作是原子的,避免了数据竞争和并发访问的问题。 什么是自旋锁 自旋锁属于 busy-waiting 类型锁,它避...

Preview Image

std::condition_variable 简单用法

std::condition_variable 是 c++ 标准库中的条件变量,用于实现线程间的同步与通信。它可以与 std::mutex 配合使用,通过等待和通知的机制,实现线程的阻塞和唤醒操作,使线程能够在特定条件满足时进行等待,或者在条件变量发生变化时进行通知,从而实现线程间的协调与同步。 常用成员函数 wait(); // 阻塞当前线程直到条件满足被唤醒 wait_for(); ...

© ziqing. 保留部分权利。

纸上得来终觉浅,绝知此事要躬行!