Receio que você tenha que ser muito preciso em sua definição de controle de simultaneidade otimista. Na definição clássica de Bernstein, Goodman e Hadzilacos, o controle de simultaneidade otimista permite que as threads adquiram "virtualmente" os bloqueios, prossigam com as atualizações e, em seguida, verifiquem a violação de consistência quando a transação tenta confirmar. Se ocorrer uma violação de consistência, a transação será forçada a abortar e será reenviada. Sob esta definição, não está claro como um deadlock pode ocorrer, uma vez que os threads "nunca" são bloqueados aguardando um bloqueio. A definição clássica de controle de concorrência otimista não é fácil de implementar na prática. No entanto, trabalhos recentes sobre memória transacional de hardware estão abrindo algumas possibilidades e lançando alguma perspectiva sobre esse velho problema.