我有两个命令缓冲区cb1,cb2,我正在使用信号量来确保执行cb2等待cb1的执行。两个命令缓冲区都以批处理方式提交到同一队列。
cb1中只有一个vkCmdCopyBuffer命令。
信号量是否足以保证cb2仅在vkCmdCopyBuffer完成内存传输后运行,或者我应该在vkCmdCopyBuffer之后的cb1中添加一个barrier命令?
答案 0 :(得分:4)
您通常不需要在单个队列中使用信号量,它们主要用于跨队列进行同步。实际上,如果您在相同的批处理(同一[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=mypersonalemail@gmail.com
auth_password=mypersonalpassword
)中提交两个命令缓冲区,则不能使用信号量,因为信号量在批处理中的任何命令缓冲之前等待启动,并在批处理中的所有命令缓冲区完成后发出信号。
对于队列中的执行和内存依赖,通常需要管道屏障或SetEvent / WaitEvent对。