请注意的是, 你不需要手工使用一次最后的cudaDeviceSynchronize()去等待(该函数是能在设备端使用的Runtime API的子集的其中一个函数),这种等待是自动的.以及, 这里的父kernel...关于ordering这里, 还需要说一点.刚才说了, 如果中途要求进行同步等待, 会*可能*导致父kernel的block被切换到显存冻结状态, 暂停执行(例如资源不足的时候).如果中途不要求进行等待,..., 这种中途的等待, 导致父kernel的block被切换到显存冻结状态, 需要一定量的显存空间,所以同步等待的层数越多, 例如连续3层kernel都因为等待被切换blocks出去到显存了,这种消耗越大...),还算是比较安全的.不用担心出现在父kernel的多个blocks的线程们之间,某个block当前正持有锁的所有权的线程, 因为突然莫名的被切换出去, 冻结执行,导致其他锁有需要等待锁的线程和block...整体卡死.但在父kernel和子kernel之间使用同一个锁的需要需要注意了,任何时候不建议在持有锁的同时, 进行同步等待操作.