GDB调试技巧实战--多线程&弱鸡条件变量

前言

曾经在《Modern C++ 条件变量》提到过可以用GDB来模拟线程调度来解释为什么打印“this is fun2,count=6” 而不是“this is fun2,count=5”。

通过本节也可以肉眼可见:

  1. 条件变量没有了另外一个flag变量的帮助是多么的文弱无力
  2. 条件变量是无状态的:如果在wait之前notify是没有任何效果的,即不会激活后来wait的线程。

回顾C++程序

#include 
#include 
#include 
#include 
#include 
using namespace std;
//全局条件变量
condition_variable cond;
mutex _mutex;
int count = 0;

void fun1(){
    while(1)
    {
        count++;
        unique_locklock(_mutex);
        if(count%5 == 0)
        {
            cond.notify_one();
        }
        else
        {
            cout<<"this is fun1,count="<

你可能感兴趣的:(GDB技巧,modern,C++,GDB调试技巧,GDB,tips,GDB实战,GDB调试多线程)