int yuxiangrousi = 0; // 全局变量:鱼香肉丝(酱油量)// 回调函数:妈妈处理酱油(将酱油加入鱼香肉丝)
void mother_callback(int new_jiangyou)
{yuxiangrousi += new_jiangyou; // 把酱油放进鱼香肉丝
}// 孩子买酱油(模拟异步操作,如另一个线程)
// 参数:妈妈的回调函数(处理酱油的函数)
void son_dajiangyou(void(*mother_callback)(int jiangyou_bought))
{int temp_jiangyou;temp_jiangyou = by_jiangyou(); // 假设调用买酱油的函数(未定义,模拟获取酱油量)mother_callback(temp_jiangyou); // 调用妈妈的回调函数处理酱油
}// 妈妈做饭的主逻辑
void mother_cooking(void)
{cook_yuxiangshousi(); // 先做鱼香肉丝(未定义,模拟烹饪步骤)son_dajiangyou(mother_callback); // 让孩子去买酱油,回来后调用回调处理cook_soup(); // 做西红柿鸡蛋汤(未定义,模拟后续步骤)
}// 辅助函数(假设存在,实际需根据场景实现)
// int by_jiangyou(void); // 买酱油(获取酱油量,未实现)
// void cook_yuxiangshousi(void); // 做鱼香肉丝(未实现)
// void cook_soup(void); // 做汤(未实现)
代码解释:
- 全局变量:
yuxiangrousi
记录鱼香肉丝中的酱油量(初始为 0)。 - 回调函数
mother_callback
:- 接收新买的酱油量(
new_jiangyou
),更新全局变量(模拟将酱油加入菜品)。
- 接收新买的酱油量(
son_dajiangyou
函数:- 模拟孩子买酱油的过程(异步操作,如另一个线程)。
- 调用
by_jiangyou
获取酱油量(模拟购买),然后通过回调函数(mother_callback
)通知妈妈处理酱油。
mother_cooking
函数:- 主逻辑:先做鱼香肉丝(此时酱油量为 0),然后让孩子买酱油(异步,不阻塞主线程),同时继续做汤(模拟并行操作)。
- 当孩子买完酱油(
son_dajiangyou
执行完毕),自动调用mother_callback
更新鱼香肉丝的酱油量(模拟异步回调的效果)。
关键概念(结合回调函数):
- 异步模拟:
son_dajiangyou
模拟异步任务(如线程),mother_callback
作为回调函数,在任务完成后(买酱油回来)被调用。 - 回调机制:妈妈(主线程)在做饭时,不需要等待孩子买酱油(避免阻塞),而是通过回调函数在酱油回来后处理,实现 “并行” 操作(实际在单线程中是顺序执行,但逻辑上模拟异步)。
自己理解