目录
伪唤醒与竞态条件
我: 请解释一下你实现的线程池中,HandlerTask 函数内部为什么使用 while 循环来检查任务队列是否为空,而不是 if 语句?这背后涉及什么经典问题?
伪唤醒(spurious wakeup)是指线程在条件变量上等待时,即使++没有其他线程调用signal或broadcast++ ,也可能被操作系统或线程库意外唤醒。这通常是底层实现中的内部延迟、信号处理干扰与或硬件条件导致的,POSIX标准明确规定允许这种行为。为了应对伪唤醒spurious wakeup,必须使用while而不是if单次判断。
竞态条件(race condition)
竞态条件(race condition)是指多个线程同时访问共享数据,且至少有一个线程在写,由于没有适当的同步机制,执行结果依赖于线程调度的具体时序,导致不可预测的错误。
☆☆☆TLS技术(内存池一级缓冲区的使用)
cpp
static _declspec(thread) ThreadCache* pTLSThreadCache = nullptr;

线程局部存储(TLS)的概念
普通全局变量 vs TLS 变量
cpp
// 普通全局变量 - 所有线程共享
int global_counter = 0;
// 线程A修改 → 线程B也能看到变化
// TLS 变量 - 每个线程独立
static _declspec(thread) int tls_counter = 0;
// 线程A修改 → 线程B不受影响,各自独立
string与char*转换接口
string std::to_string(int val); 将纯正数字字符转string类型。
string::c_str(); 将string转const char*
常用的输入接口
1.std::getline()它可以指定字符停止,getline是以行为单位进行读取的。

防火墙(多机器协作)
