Если вам действительно нужно запустить две транзакции, которые выполняются независимо, выполняя некоторую работу с каждой из них, и вам необходимо проверить некоторые утверждения после того, как они оба запустятся, но до того, как они будут зафиксированы или откатаны, - а затем необходимо зафиксировать илиОткат обоих после утверждений, вам нужно будет установить свою собственную многопоточную структуру ... Что-то вроде:
execute(AssertCallback aC, TransactionCallback ... tCs);
Этот метод будет запускать поток для каждого из TC.Каждый поток будет вызывать метод обратного вызова в каждом из них и при возврате блока на барьере, пока все потоки, выполняющие tC, не достигнут этой же точки.Основной поток также будет ожидать блокировки всех потоков tC, а затем запустит обратный вызов aC, а когда он вернется, освободит все потоки tC, чтобы они могли зафиксировать / откатить и выйти.
Itвсе кажется немного странным в том, что обратный вызов aC не может «увидеть» какую-либо работу, выполненную любым из обратных вызовов tC, поскольку это происходит в транзакциях, которые еще не были зафиксированы.
Я никогда не виделэто реализовано ... Но, если вы хотите увидеть то, о чем я говорил, взгляните на проект параллельных тестов здесь: https://github.com/moilejter/examples.git