- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 notify和unlock的顺序
虚假唤醒即使没有线程向条件变量发出信号,线程也可能从等待状态中唤醒。注:虚假唤醒很容易被人误解为:如果有多个消费者,这些消费者可能阻塞在同一位置。当生产者通知not empty时,duque立即被第一个被唤醒的消费者清空,则后面的消费者相当于时被虚假唤醒了。这种情况完全可以通过使用signal而非broadcast解决。signal只会唤醒某个线程,唤醒的依据为等待线程的优先级,若优先级相同...
2020-01-15 00:43:26 1651
原创 头文件规则
头文件中只可以放置函数声明,不可以放置函数定义吗?先分析下面的程序:// a.h#ifndef __a_h__#define __a_h__void funcA(void); // 声明void funcA(void) // 定义{}#endif// b.h#ifndef __b_h__#define __b_h__void funcB(void);#endi...
2020-01-08 17:25:53 236
原创 include头文件和前置声明
两个原则第一个原则是,如果使用的仅仅是一个类的指针或者引用,没有使用这个类的具体对象(非指针),也没有访问到类的具体成员,那么前置声明就可以了。因为指针这一数据类型的大小是特定的,编译器可以获知。第二个原则应该是,尽量在CPP文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针,在类A的头文件中使用了类B的前置声明并编译成功,那么在A的实现中我们需要访问B的具体成...
2020-01-03 12:03:30 553
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人