标签: concurrency linux-kernel synchronization semaphore mutual-exclusion
考虑内核中的一个场景,我们在当前线程之外启动一些活动,然后等待该活动完成。使用信号量可以很好地实现这种同步。但是,使用完成被认为是一种很好的做法。
在这种情况下,为什么完成信息优先于信号量?
完成可以被视为条件变量,并且大多数是使用信号量并使用包装器实现的。对于Linux内核中的完成情况,这是不是真的?
此外,文档说完成比信号量更好,更轻。完成的实现与增加这些优势的信号量有何不同?