目录
二:并发问题 - 竞争(竞态)条件(race conditions)
一:概述
并发编程是驱动编程中的核心问题之一。与并发相关的bug最容易产生,也很难找到。即使是专业的Linux内核程序员,有时也会产生与并发相关的bug。现代Linux操作系统,为了满足现代硬件和应用程序需求,其Linux内核已经发展到可以同时处理很多事情的程度,这一进化使得性能和可扩展性都得到了极大的提升。然而,这也大大增加了驱动编程的复杂性。所以设备驱动开发人员必须从一开始就要开始考虑并发问题,并且必须充分了解内核提供的并发编程接口。
二:并发问题 - 竞争(竞态)条件(race conditions)
为了讲述竞争条件(race conditions), 先让我们快速浏览下面的代码片段。这段代码逻辑是:判断内存是否已经分配完毕,如果未分配则分配内存,如果分配失败则返回。代码如下: