990 -- 7:46 App Go面试-互斥锁实现原理,信号量讲解15-5 1142 -- 20:28 App Go面试-sync.Pool包的使用问题,fmt包中如何正确使用Pool包的15_6 1201 1 10:40 App Go笔试-WaitGroup手写支持超时WaitTimeout功能-13 4124 -- 13:34 App AstroNvim介绍给不想折腾的使用vim的开发者 824 -- 3:43 App...
从 Backtrace 来看,应该是 i2c_transfer 中调用 mutex_lock 导致 schedule 调用 而产生 进程调度,导致死机. 而在中断上下文,这种情况是绝对不允许发生的.换句话说是不允许 睡眠的,不允许进程调度.你可以 把 mutex_lock 注释掉再试试 .
所以用不用mutex和async没有任何联系。从你的问题来看,你是个新手,应该去学操作系统,如果thread是什么...
需要。async不改变程序是多线程的本质,如果有数据冲突,当然还要加锁。
std::async 就是开启新线程,一样要考虑加锁的问题。